home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 26 / Cream of the Crop 26.iso / program / inter54a.zip / INTERRUP.B < prev    next >
Text File  |  1997-06-29  |  319KB  |  8,808 lines

  1. Interrupt List, part 2 of 16
  2. Copyright (c) 1989,1990,1991,1992,1993,1994,1995,1996,1997 Ralf Brown
  3. --------B-1300-------------------------------
  4. INT 13 - DISK - RESET DISK SYSTEM
  5.     AH = 00h
  6.     DL = drive (if bit 7 is set both hard disks and floppy disks reset)
  7. Return: AH = status (see #0159)
  8.     CF clear if successful (returned AH=00h)
  9.     CF set on error
  10. Note:    forces controller to recalibrate drive heads (seek to track 0)
  11.     for PS/2 35SX, 35LS, 40SX and L40SX, as well as many other systems,
  12.       both the master drive and the slave drive respond to the Reset
  13.       function that is issued to either drive
  14. SeeAlso: AH=0Dh,AH=11h,INT 21/AH=0Dh,INT 4D/AH=00h"TI Professional"
  15. SeeAlso: INT 56"Tandy 2000"
  16. --------B-1301-------------------------------
  17. INT 13 - DISK - GET STATUS OF LAST OPERATION
  18.     AH = 01h
  19.     DL = drive (bit 7 set for hard disk)
  20. Return: CF clear if successful (returned status 00h)
  21.     CF set on error
  22.     AH = status of previous operation (see #0159)
  23. Note:    some BIOSes return the status in AL; the PS/2 Model 30/286 returns the
  24.       status in both AH and AL
  25. SeeAlso: AH=00h,INT 4D/AH=01h,MEM 0040h:0074h
  26.  
  27. (Table 0159)
  28. Values for disk operation status:
  29.  00h    successful completion
  30.  01h    invalid function in AH or invalid parameter
  31.  02h    address mark not found
  32.  03h    disk write-protected
  33.  04h    sector not found/read error
  34.  05h    reset failed (hard disk)
  35.  05h    data did not verify correctly (TI Professional PC)
  36.  06h    disk changed (floppy)
  37.  07h    drive parameter activity failed (hard disk)
  38.  08h    DMA overrun
  39.  09h    data boundary error (attempted DMA across 64K boundary or >80h sectors)
  40.  0Ah    bad sector detected (hard disk)
  41.  0Bh    bad track detected (hard disk)
  42.  0Ch    unsupported track or invalid media
  43.  0Dh    invalid number of sectors on format (PS/2 hard disk)
  44.  0Eh    control data address mark detected (hard disk)
  45.  0Fh    DMA arbitration level out of range (hard disk)
  46.  10h    uncorrectable CRC or ECC error on read
  47.  11h    data ECC corrected (hard disk)
  48.  20h    controller failure
  49.  31h    no media in drive (IBM/MS INT 13 extensions)
  50.  32h    incorrect drive type stored in CMOS (Compaq)
  51.  40h    seek failed
  52.  80h    timeout (not ready)
  53.  AAh    drive not ready (hard disk)
  54.  B0h    volume not locked in drive (INT 13 extensions)
  55.  B1h    volume locked in drive (INT 13 extensions)
  56.  B2h    volume not removable (INT 13 extensions)
  57.  B3h    volume in use (INT 13 extensions)
  58.  B4h    lock count exceeded (INT 13 extensions)
  59.  B5h    valid eject request failed (INT 13 extensions)
  60.  BBh    undefined error (hard disk)
  61.  CCh    write fault (hard disk)
  62.  E0h    status register error (hard disk)
  63.  FFh    sense operation failed (hard disk)
  64. SeeAlso: #M022
  65. --------B-1302-------------------------------
  66. INT 13 - DISK - READ SECTOR(S) INTO MEMORY
  67.     AH = 02h
  68.     AL = number of sectors to read (must be nonzero)
  69.     CH = low eight bits of cylinder number
  70.     CL = sector number 1-63 (bits 0-5)
  71.          high two bits of cylinder (bits 6-7, hard disk only)
  72.     DH = head number
  73.     DL = drive number (bit 7 set for hard disk)
  74.     ES:BX -> data buffer
  75. Return: CF set on error
  76.         if AH = 11h (corrected ECC error), AL = burst length
  77.     CF clear if successful
  78.     AH = status (see #0159)
  79.     AL = number of sectors transferred (only valid if CF set for some
  80.           BIOSes)
  81. Notes:    errors on a floppy may be due to the motor failing to spin up quickly
  82.       enough; the read should be retried at least three times, resetting
  83.       the disk with AH=00h between attempts
  84.     most BIOSes support "multitrack" reads, where the value in AL
  85.       exceeds the number of sectors remaining on the track, in which
  86.       case any additional sectors are read beginning at sector 1 on
  87.       the following head in the same cylinder; the CONFIG.SYS command
  88.       MULTITRACK can be used to force DOS to split disk accesses which
  89.       would wrap across a track boundary into two separate calls
  90.     the IBM AT BIOS and many other BIOSes use only the low four bits of
  91.       DH (head number) since the WD-1003 controller which is the standard
  92.       AT controller (and the controller that IDE emulates) only supports
  93.       16 heads
  94.     AWARD AT BIOS and AMI 386sx BIOS have been extended to handle more
  95.       than 1024 cylinders by placing bits 10 and 11 of the cylinder number
  96.       into bits 6 and 7 of DH
  97.     under Windows95, a volume must be locked (see INT 21/AX=440Dh/CX=084Bh)
  98.       in order to perform direct accesses such as INT 13h reads and writes
  99. SeeAlso: AH=03h,AH=0Ah,AH=06h"V10DISK.SYS",AH=21h"PS/1",AH=42h"IBM"
  100. SeeAlso: INT 21/AX=440Dh/CX=084Bh,INT 4D/AH=02h
  101. --------B-1303-------------------------------
  102. INT 13 - DISK - WRITE DISK SECTOR(S)
  103.     AH = 03h
  104.     AL = number of sectors to write (must be nonzero)
  105.     CH = low eight bits of cylinder number
  106.     CL = sector number 1-63 (bits 0-5)
  107.          high two bits of cylinder (bits 6-7, hard disk only)
  108.     DH = head number
  109.     DL = drive number (bit 7 set for hard disk)
  110.     ES:BX -> data buffer
  111. Return: CF set on error
  112.     CF clear if successful
  113.     AH = status (see #0159)
  114.     AL = number of sectors transferred
  115.           (only valid if CF set for some BIOSes)
  116. Notes:    errors on a floppy may be due to the motor failing to spin up quickly
  117.       enough; the write should be retried at least three times, resetting
  118.       the disk with AH=00h between attempts
  119.     most BIOSes support "multitrack" writes, where the value in AL
  120.       exceeds the number of sectors remaining on the track, in which
  121.       case any additional sectors are written beginning at sector 1 on
  122.       the following head in the same cylinder; the CONFIG.SYS command
  123.       MULTITRACK can be used to force DOS to split disk accesses which
  124.       would wrap across a track boundary into two separate calls
  125.     the IBM AT BIOS and many other BIOSes use only the low four bits of
  126.       DH (head number) since the WD-1003 controller which is the standard
  127.       AT controller (and the controller that IDE emulates) only supports
  128.       16 heads
  129.     AWARD AT BIOS and AMI 386sx BIOS have been extended to handle more
  130.       than 1024 cylinders by placing bits 10 and 11 of the cylinder number
  131.       into bits 6 and 7 of DH
  132.     under Windows95, an application must issue a physical volume lock on
  133.       the drive via INT 21/AX=440Dh before it can successfully write to
  134.       the disk with this function
  135. SeeAlso: AH=02h,AH=0Bh,AH=07h"V10DISK.SYS",AH=22h"PS/1",AH=43h"IBM"
  136. SeeAlso: INT 21/AX=440Dh"DOS 3.2+",INT 4D/AH=03h
  137. --------B-1304-------------------------------
  138. INT 13 - DISK - VERIFY DISK SECTOR(S)
  139.     AH = 04h
  140.     AL = number of sectors to verify (must be nonzero)
  141.     CH = low eight bits of cylinder number
  142.     CL = sector number 1-63 (bits 0-5)
  143.          high two bits of cylinder (bits 6-7, hard disk only)
  144.     DH = head number
  145.     DL = drive number (bit 7 set for hard disk)
  146.     ES:BX -> data buffer (PC,XT,AT with BIOS prior to 11/15/85)
  147. Return: CF set on error
  148.     CF clear if successful
  149.     AH = status (see #0159)
  150.     AL = number of sectors verified
  151. Notes:    errors on a floppy may be due to the motor failing to spin up quickly
  152.       enough; the write should be retried at least three times, resetting
  153.       the disk with AH=00h between attempts
  154.     this function does not compare the disk with memory, it merely
  155.       checks whether the sector's stored CRC matches the data's actual CRC
  156.     the IBM AT BIOS and many other BIOSes use only the low four bits of
  157.       DH (head number) since the WD-1003 controller which is the standard
  158.       AT controller (and the controller that IDE emulates) only supports
  159.       16 heads
  160.     AWARD AT BIOS and AMI 386sx BIOS have been extended to handle more
  161.       than 1024 cylinders by placing bits 10 and 11 of the cylinder number
  162.       into bits 6 and 7 of DH
  163. SeeAlso: AH=02h,AH=44h,INT 4D/AH=04h,INT 4D/AH=06h
  164. --------B-1305-------------------------------
  165. INT 13 - FLOPPY - FORMAT TRACK
  166.     AH = 05h
  167.     AL = number of sectors to format
  168.     CH = track number
  169.     DH = head number
  170.     DL = drive number
  171.     ES:BX -> address field buffer (see #0160)
  172. Return: CF set on error
  173.     CF clear if successful
  174.     AH = status (see #0159)
  175. Notes:    on AT or higher, call AH=17h first
  176.     the number of sectors per track is read from the diskette parameter
  177.       table pointed at by INT 1E
  178. SeeAlso: AH=05h"FIXED",AH=17h,AH=18h,INT 1E
  179.  
  180. Format of floppy format address field buffer entry (one per sector in track):
  181. Offset    Size    Description    (Table 0160)
  182.  00h    BYTE    track number
  183.  01h    BYTE    head number (0-based)
  184.  02h    BYTE    sector number
  185.  03h    BYTE    sector size (00h=128 bytes, 01h=256 bytes, 02h=512, 03h=1024)
  186. --------B-1305-------------------------------
  187. INT 13 - FIXED DISK - FORMAT TRACK
  188.     AH = 05h
  189.     AL = interleave value (XT-type controllers only)
  190.     ES:BX -> 512-byte format buffer
  191.         the first 2*(sectors/track) bytes contain F,N for each sector
  192.            F = sector type
  193.             00h for good sector
  194.             20h to unassign from alternate location
  195.             40h to assign to alternate location
  196.             80h for bad sector
  197.            N = sector number
  198.     CH = cylinder number (bits 8,9 in high bits of CL)
  199.     CL = high bits of cylinder number (bits 7,6)
  200.     DH = head
  201.     DL = drive
  202. Return: CF set on error
  203.     CF clear if successful
  204.     AH = status code (see #0159)
  205. Notes:    AWARD AT BIOS and AMI 386sx BIOS have been extended to handle more
  206.       than 1024 cylinders by placing bits 10 and 11 of the cylinder number
  207.       into bits 6 and 7 of DH
  208.     for XT-type controllers on an AT or higher, AH=0Fh should be called
  209.       first
  210.     the IBM AT BIOS and many other BIOSes use only the low four bits of
  211.       DH (head number) since the WD-1003 controller which is the standard
  212.       AT controller (and the controller that IDE emulates) only supports
  213.       16 heads
  214.     not all controller support sector types 20h and 40h
  215.     under Windows95, an application must issue a physical volume lock on
  216.       the drive via INT 21/AX=440Dh before it can successfully write to
  217.       the disk with this function
  218. SeeAlso: AH=05h"FLOPPY",AH=06h"FIXED",AH=07h"FIXED",AH=0Fh,AH=18h,AH=1Ah
  219. --------d-1305-------------------------------
  220. INT 13 - Future Domain SCSI BIOS - SEND SCSI MODE SELECT COMMAND
  221.     AH = 05h
  222.     DL = hard drive ID
  223.     ES:BX -> mode select data (see #0161)
  224. Return: CF set on error
  225.     CF clear if successful
  226.     AH = status code (see #0159)
  227. Notes:    this function can be called before AH=07h"SCSI" or AH=06h"SCSI" to
  228.       format a SCSI disk with the desired parameters
  229.     the mode select data below is from the SCSI-1 specification
  230.     the TMC-950 does not support any Future Domain BIOS calls; instead,
  231.       it provides a full CAM implementation (see INT 4F/AX=8100h)
  232. SeeAlso: AH=06h"SCSI",AH=07h"SCSI",INT 4F/AX=8100h
  233.  
  234. Format of Future Domain SCSI mode select data:
  235. Offset    Size    Description    (Table 0161)
  236.  00h    BYTE    number of bytes of remaining data (12 + vendor unique length)
  237.  01h    BYTE    reserved (0)
  238.  02h    BYTE    medium type (0 for hard disk)
  239.  03h    BYTE    reserved (0)
  240.  04h    BYTE    block descriptor length (8)
  241.  05h    BYTE    density code (0 for hard disk)
  242.  06h  3 BYTEs    (big-endian) number of blocks (000000h for entire disk)
  243.  09h    BYTE    reserved (0)
  244.  0Ah  3 BYTEs    (big-endian) block length (512 standard, or 256)
  245.  0Dh    ???    vendor-specific parameter bytes (optional)
  246. --------d-13057FSI324D-----------------------
  247. INT 13 - 2M - FORMAT TRACK
  248.     AX = 057Fh
  249.     SI = 324Dh ("2M")
  250.     CH = track number
  251.     DH = head number
  252.     DL = drive number
  253.     ES:BX -> boot sector of future 2M diskette
  254. Return: CF set on error
  255.     CF clear if successful
  256.     AH = status (see #0159)
  257. Program: 2M is a TSR developed by Ciriaco Garcia de Celis to support
  258.       non standard diskettes with 820-902/1476-1558K (5.25 DD/HD)
  259.       and 984-1066/1804-1886K/3608-3772K (3.5 DD/HD/ED)
  260. Notes:    it is not necessary to call AH=17h or AH=18h first (will be ignored)
  261.     the diskette format must always begin on cylinder 0 head 0
  262.     the boot sector can be obtained from an already-formatted 2M diskette
  263.       (by calling AH=02h with head number 00h in 2M v1.x and with head
  264.       number 80h for 2M v2+)
  265.     the installation check for 2M must search for a "CiriSOFT:2M:1.3" or
  266.       "CiriSOFT:2MX:3.0" or similar (recomended ":2M:", ":2MX:", or ":2MB:"
  267.       substrings) in CiriSOFT TSR interface
  268.     since 2M v2.0, the BOOT sector is emulated using the first physical
  269.       sector of FAT2; the second-sixth physical sectors of FAT2 in HD or ED
  270.       diskettes store the SuperBOOT code. To skip the FAT2 emulation (using
  271.       FAT1) of 2M, in order to read the SuperBOOT code, head number must be
  272.       80h-81h instead 0-1 (bit 7 active) in standard read/write functions.
  273.       This lets diskcopy programs format 2M target diskettes copying
  274.       SuperBOOT code. If the target diskette is already 2MF formatted
  275.       (containing boot code) this trick it is not necessary.
  276.     when using STV technology (offset 65 of boot sector equal to 1) it is
  277.       necessary to write the full track before formatting (except track 0
  278.       side 0) to complete the format and skip future CRC errors on read; in
  279.       track 0 side 1 the head used must be 81h instead 1. Diskcopy programs
  280.       may do a format-write-verify sequential phases to improve performance
  281. SeeAlso: AH=05h"FLOPPY",AH=18h/CX=5055h,INT 2F"CiriSOFT"
  282. --------B-1306-------------------------------
  283. INT 13 - FIXED DISK - FORMAT TRACK AND SET BAD SECTOR FLAGS (XT,PORT)
  284.     AH = 06h
  285.     AL = interleave value
  286.     CH = cylinder number (bits 8,9 in high bits of CL)
  287.     CL = sector number
  288.     DH = head
  289.     DL = drive
  290. Return: AH = status code (see #0159)
  291. Note:    AWARD AT BIOS and AMI 386sx BIOS have been extended to handle more
  292.       than 1024 cylinders by placing bits 10 and 11 of the cylinder number
  293.       into bits 6 and 7 of DH
  294. SeeAlso: AH=05h"FIXED",AH=07h"FIXED"
  295. --------d-1306-------------------------------
  296. INT 13 - Future Domain SCSI BIOS - FORMAT DRIVE WITH BAD SECTOR MAPPING
  297.     AH = 06h
  298.     AL = interleave
  299.          (0 = default, 1 = consecutive sectors, 2 - 255 = vendor unique)
  300.     DL = hard drive ID
  301.     DH = defect list info (see #0162)
  302.     ES:BX -> defect table A, B or C (see #0163,#0164,#0165)
  303. Return: CF set on error
  304.     CF clear if successful
  305.     AH = status code (see #0159)
  306. Notes:    block addresses must be in ascending order (for table B, cylinder is
  307.       most significant, byte from index least significant; for table C,
  308.       cylinder is most significant, sector number least significant)
  309.     table B defect bytes from index of FFFFFFFFh indicates that the entire
  310.       track shall be reassigned
  311.     table C defect sector number of FFFFFFFFh indicates that the entire
  312.       track shall be reassigned
  313.     the TMC-950 does not support any Future Domain BIOS calls; instead,
  314.       it provides a full CAM implementation (see INT 4F/AX=8100h)
  315. SeeAlso: AH=05h"SCSI",AH=06h"FIXED",AH=07h"SCSI"
  316.  
  317. Bitfields for Future Domain SCSI defect list info:
  318. Bit(s)    Description    (Table 0162)
  319.  7-5    drive LUN
  320.  4    defect list is available
  321.  3    defect list is complete (erase drive's defect list)
  322.  2-0    defect table format
  323.     (000=use defect table A, 100=use defect table B,
  324.      101=use defect table C)
  325.  
  326. Format of Future Domain SCSI defect table A:
  327. Offset    Size    Description    (Table 0163)
  328.  00h    WORD    number of bytes remaining in table
  329.  02h    BYTE    reserved (0)
  330.  03h    BYTE    reserved (0)
  331.  04h    WORD    (big-endian) defect list length (4*number of defects)
  332.  06h  4 DWORDs    (big-endian) defect block addresses
  333.  
  334. Format of Future Domain SCSI defect table B:
  335. Offset    Size    Description    (Table 0164)
  336.  00h    WORD    number of bytes remaining in table
  337.  02h    BYTE    reserved (0)
  338.  03h    BYTE    reserved (0)
  339.  04h    WORD    (big-endian) defect list length (8*number of defects)
  340.  06h 8N BYTEs    defect list [array] (see #0166)
  341.  
  342. Format of Future Domain SCSI defect table C:
  343. Offset    Size    Description    (Table 0165)
  344.  00h    WORD    number of bytes remaining in table
  345.  02h    BYTE    reserved (0)
  346.  03h    BYTE    reserved (0)
  347.  04h    WORD    (big-endian) defect list length (8*number of defects)
  348.  06h 8N BYTEs    defect list [array] (see #0166)
  349.  
  350. Format of Future Domain SCSI defect list entry:
  351. Offset    Size    Description    (Table 0166)
  352.  00h  3 BYTEs    (big-endian) cylinder number of defect
  353.  03h    BYTE    head number of defect
  354.  04h    DWORD    (big-endian) defect bytes from index
  355. --------d-1306-------------------------------
  356. INT 13 - Adaptec AHA-154xA/Bustek BT-542 BIOS - IDENTIFY SCSI DEVICES
  357.     AH = 06h
  358. Return: AH = status code (see #0159)
  359.     CF clear if successful
  360.         AL = first drive supported
  361.         (80h nonconcurrent operation, 81h concurrent operation)
  362.     CF set on error
  363. Desc:    determine the number of the first supported SCSI drive
  364. Note:    the return value is 80h when two SCSI drives are supported, 81h if
  365.       only one SCSI drive is installed
  366. SeeAlso: AH=08h"PC",#0649 at INT 1A/AX=B102h
  367. --------d-1306-------------------------------
  368. INT 13 - V10DISK.SYS - READ DELETED SECTORS
  369.     AH = 06h
  370.     AL = number of sectors
  371.     CH = cylinder number (bits 8,9 in high bits of CL)
  372.     CL = sector number
  373.     DH = head
  374.     DL = drive
  375.     ES:BX -> buffer
  376. Return: AH = status code (see #0159)
  377. Program: V10DISK.SYS is a driver for the Flagstaff Engineering 8" floppies
  378. SeeAlso: AH=02h,AH=07h"V10DISK.SYS"
  379. --------B-1307-------------------------------
  380. INT 13 - FIXED DISK - FORMAT DRIVE STARTING AT GIVEN TRACK (XT,PORT)
  381.     AH = 07h
  382.     AL = interleave value (XT only)
  383.     ES:BX = 512-byte format buffer (see AH=05h)
  384.     CH = cylinder number (bits 8,9 in high bits of CL)
  385.     CL = sector number
  386.     DH = head
  387.     DL = drive
  388. Return: AH = status code (see #0159)
  389. Note:    AWARD AT BIOS and AMI 386sx BIOS have been extended to handle more
  390.       than 1024 cylinders by placing bits 10 and 11 of the cylinder number
  391.       into bits 6 and 7 of DH
  392. SeeAlso: AH=05h"FIXED",AH=06h"FIXED",AH=1Ah
  393. --------d-1307-------------------------------
  394. INT 13 - Future Domain SCSI BIOS - FORMAT DRIVE
  395.     AH = 07h
  396.     AL = interleave (0 = default, 1 = consecutive sectors,
  397.            2 - 255 = vendor unique)
  398.     DL = hard drive ID
  399. Return: CF set on error
  400.     CF clear if successful
  401.     AH = status code (see #0159)
  402. SeeAlso: AH=05h"SCSI",AH=06h"SCSI",AH=07h"FIXED"
  403. --------d-1307-------------------------------
  404. INT 13 - V10DISK.SYS - WRITE DELETED SECTORS
  405.     AH = 07h
  406.     AL = number of sectors
  407.     CH = cylinder number (bits 8,9 in high bits of CL)
  408.     CL = sector number
  409.     DH = head
  410.     DL = drive
  411.     ES:BX -> buffer
  412. Return: AH = status code (see #0159)
  413. Program: V10DISK.SYS is a driver for the Flagstaff Engineering 8" floppies
  414. SeeAlso: AH=03h,AH=06h"V10DISK.SYS"
  415. --------B-1308-------------------------------
  416. INT 13 - DISK - GET DRIVE PARAMETERS (PC,XT286,CONV,PS,ESDI,SCSI)
  417.     AH = 08h
  418.     DL = drive (bit 7 set for hard disk)
  419. Return: CF set on error
  420.         AH = status (07h) (see #0159)
  421.     CF clear if successful
  422.         AH = 00h
  423.         BL = drive type (AT/PS2 floppies only) (see #0167)
  424.         CH = low eight bits of maximum cylinder number
  425.         CL = maximum sector number (bits 5-0)
  426.          high two bits of maximum cylinder number (bits 7-6)
  427.         DH = maximum head number
  428.         DL = number of drives
  429.         ES:DI -> drive parameter table (floppies only)
  430. Notes:    may return successful even though specified drive is greater than the
  431.       number of attached drives of that type (floppy/hard); check DL to
  432.       ensure validity
  433.     for systems predating the IBM AT, this call is only valid for hard
  434.       disks, as it is implemented by the hard disk BIOS rather than the
  435.       ROM BIOS
  436.     Toshiba laptops with HardRAM return DL=02h when called with DL=80h,
  437.       but fail on DL=81h.  The BIOS data at 40h:75h correctly reports 01h.
  438.     may indicate only two drives present even if more are attached; to
  439.       ensure a correct count, one can use AH=15h to scan through possible
  440.       drives
  441.     for BIOSes which reserve the last cylinder for testing purposes, the
  442.       cylinder count is automatically decremented
  443.     on PS/1s with IBM ROM DOS 4, nonexistent drives return CF clear,
  444.       BX=CX=0000h, and ES:DI = 0000h:0000h
  445. SeeAlso: AH=06h"Adaptec",AH=13h"SyQuest",AH=48h,AH=15h,INT 1E
  446. SeeAlso: INT 41"HARD DISK 0"
  447.  
  448. (Table 0167)
  449. Values for diskette drive type:
  450.  01h    360K
  451.  02h    1.2M
  452.  03h    720K
  453.  04h    1.44M
  454.  05h    ??? (reportedly an obscure drive type shipped on some IBM machines)
  455.     2.88M on some machines (at least AMI 486 BIOS)
  456.  06h    2.88M
  457.  10h    ATAPI Removable Media Device
  458. --------d-1308-------------------------------
  459. INT 13 - V10DISK.SYS - SET FORMAT
  460.     AH = 08h
  461.     AL = number of sectors
  462.     CH = cylinder number (bits 8,9 in high bits of CL)
  463.     CL = sector number
  464.     DH = head
  465.     DL = drive
  466. Return: AH = status code (see #0159)
  467. Program: V10DISK.SYS is a driver for the Flagstaff Engineering 8" floppies
  468. Note:    details not available
  469. SeeAlso: AH=03h,AH=06h"V10DISK.SYS"
  470. --------y-130800DLF0-------------------------
  471. INT 13 - SecureDrive - INSTALLATION CHECK
  472.     AX = 08000h
  473.     DL = F0h
  474. Return: AX = EDCBh for version 1.0-1.2
  475.     AX = EDCCh for version 1.3
  476.     CX = code segment
  477.     DX = data address within code segment
  478. Program: SecureDrive by Mike Ingle <mikeingle@delphi.com> allows you to create
  479.       an encrypted partition on your harddisk.
  480. --------B-1309-------------------------------
  481. INT 13 - HARD DISK - INITIALIZE CONTROLLER WITH DRIVE PARAMETERS (AT,PS)
  482.     AH = 09h
  483.     DL = drive (80h for first, 81h for second)
  484. Return: CF clear if successful
  485.     CF set on error
  486.     AH = status (see #0159)
  487. Notes:    on the PC and XT, this function uses the parameter table pointed at by
  488.       INT 41
  489.     on the AT and later, this function uses the parameter table pointed at
  490.       by INT 41 if DL=80h, and the parameter table pointed at by INT 46 if
  491.       DL=81h
  492. SeeAlso: INT 41"HARD DISK 0",INT 46"HARD DISK 1"
  493. --------B-130A-------------------------------
  494. INT 13 - HARD DISK - READ LONG SECTOR(S) (AT and later)
  495.     AH = 0Ah
  496.     AL = number of sectors (01h may be only value supported)
  497.     CH = low eight bits of cylinder number
  498.     CL = sector number (bits 5-0)
  499.          high two bits of cylinder number (bits 7-6)
  500.     DH = head number
  501.     DL = drive number (80h = first, 81h = second)
  502.     ES:BX -> data buffer
  503. Return: CF clear if successful
  504.     CF set on error
  505.     AH = status (see #0159)
  506.     AL = number of sectors transferred
  507. Notes:    this function reads in four to seven bytes of error-correcting code
  508.       along with each sector's worth of information
  509.     data errors are not automatically corrected, and the read is aborted
  510.       after the first sector with an ECC error
  511.     used for diagnostics only on PS/2 systems; IBM officially classifies
  512.       this function as optional
  513. SeeAlso: AH=02h,AH=0Bh,MEM 0040h:0074h
  514. --------B-130B-------------------------------
  515. INT 13 - HARD DISK - WRITE LONG SECTOR(S) (AT and later)
  516.     AH = 0Bh
  517.     AL = number of sectors (01h may be only value supported)
  518.     CH = low eight bits of cylinder number
  519.     CL = sector number (bits 5-0)
  520.          high two bits of cylinder number (bits 7-6)
  521.     DH = head number
  522.     DL = drive number (80h = first, 81h = second)
  523.     ES:BX -> data buffer
  524. Return: CF clear if successful
  525.     CF set on error
  526.     AH = status (see #0159)
  527.     AL = number of sectors transferred
  528. Notes:    each sector's worth of data must be followed by four to seven bytes of
  529.       error-correction information
  530.     used for diagnostics only on PS/2 systems; IBM officially classifies
  531.       this function as optional
  532. SeeAlso: AH=03h,AH=0Ah,MEM 0040h:0074h
  533. --------B-130C-------------------------------
  534. INT 13 - HARD DISK - SEEK TO CYLINDER
  535.     AH = 0Ch
  536.     CH = low eight bits of cylinder number
  537.     CL = sector number (bits 5-0)
  538.         high two bits of cylinder number (bits 7-6)
  539.     DH = head number
  540.     DL = drive number (80h = first, 81h = second hard disk)
  541. Return: CF set on error
  542.     CF clear if successful
  543.     AH = status (see #0159)
  544. SeeAlso: AH=00h,AH=02h,AH=0Ah,AH=47h
  545. --------B-130D-------------------------------
  546. INT 13 - HARD DISK - RESET HARD DISKS
  547.     AH = 0Dh
  548.     DL = drive number (80h = first, 81h = second hard disk)
  549. Return: CF set on error
  550.     CF clear if successful
  551.     AH = status (see #0159)
  552. Notes:    reinitializes the hard disk controller, resets the specified drive's
  553.       parameters, and recalibrates the drive's heads (seek to track 0)
  554.     for PS/2 35SX, 35LS, 40SX and L40SX, as well as many other systems,
  555.       both the master drive and the slave drive respond to the Reset
  556.       function that is issued to either drive
  557.     not for PS/2 ESDI drives
  558. SeeAlso: AH=00h,INT 21/AH=0Dh
  559. --------B-130E-------------------------------
  560. INT 13 - HARD DISK - READ SECTOR BUFFER (XT only)
  561.     AH = 0Eh
  562.     DL = drive number (80h = first, 81h = second hard disk)
  563.     ES:BX -> buffer
  564. Return: CF set on error
  565.     CF clear if successful
  566.     AH = status code (see #0159)
  567. Notes:    transfers controller's sector buffer.  No data is read from the drive
  568.     used for diagnostics only on PS/2 systems
  569. SeeAlso: AH=0Ah
  570. --------B-130F-------------------------------
  571. INT 13 - HARD DISK - WRITE SECTOR BUFFER (XT only)
  572.     AH = 0Fh
  573.     DL = drive number (80h = first, 81h = second hard disk)
  574.     ES:BX -> buffer
  575. Return: CF set on error
  576.     CF clear if successful
  577.     AH = status code (see #0159)
  578. Notes:    does not write data to the drive
  579.     should be called before formatting to initialize an XT-type
  580.       controller's sector buffer
  581.     used for diagnostics only on PS/2 systems
  582. SeeAlso: AH=0Bh
  583. --------B-1310-------------------------------
  584. INT 13 - HARD DISK - CHECK IF DRIVE READY
  585.     AH = 10h
  586.     DL = drive number (80h = first, 81h = second hard disk)
  587. Return: CF set on error
  588.     CF clear if successful
  589.     AH = status (see #0159 at AH=01h)
  590. --------B-1311-------------------------------
  591. INT 13 - HARD DISK - RECALIBRATE DRIVE
  592.     AH = 11h
  593.     DL = drive number (80h = first, 81h = second hard disk)
  594. Return: CF set on error
  595.     CF clear if successful
  596.     AH = status (see #0159 at AH=01h)
  597. Note:    causes hard disk controller to seek the specified drive to cylinder 0
  598. SeeAlso: AH=00h,AH=0Ch,AH=19h"FIXED DISK"
  599. --------B-1312-------------------------------
  600. INT 13 - HARD DISK - CONTROLLER RAM DIAGNOSTIC (XT,PS)
  601.     AH = 12h
  602.     DL = drive number (80h = first, 81h = second hard disk)
  603. Return: CF set on error
  604.     CF clear if successful
  605.     AH = status code (see #0159 at AH=01h)
  606.     AL = 00h
  607. SeeAlso: AH=13h,AH=14h
  608. --------d-1312-------------------------------
  609. INT 13 - Future Domain SCSI CONTROLLER - STOP SCSI DISK
  610.     AH = 12h
  611.     DL = hard drive ID
  612. Return: CF set on error
  613.     CF clear if successful
  614.     AH = status code (see #0159 at AH=01h)
  615. Notes:    available at least on the TMC-870 8-bit SCSI controller BIOS v6.0A
  616.     if the given drive is a SCSI device, the SCSI Stop Unit command is sent
  617.       and either "Disk prepared for shipping" or "Disk Stop command failed"
  618.       is displayed
  619.     the TMC-950 does not support any Future Domain BIOS calls; instead,
  620.       it provides a full CAM implementation (see INT 4F/AX=8100h)
  621. --------d-1312-------------------------------
  622. INT 13 - SyQuest - START/STOP SCSI DISK
  623.     AH = 12h
  624.     AL = subfunction
  625.         00h start disk
  626.         01h stop disk
  627.     CX = wait flag
  628.         00h wait for ready
  629.         01h don't wait for ready
  630.     DL = hard drive ID (bit 7 for hard disks must be set)
  631. Return: CF set on error
  632.     CF clear if successful
  633.     AH = status
  634.         00h successful
  635.         01h invalid function request
  636.         80h timeout
  637. SeeAlso: AH=12h"Future Domain",AH=13h"SyQuest"
  638. --------B-1313-------------------------------
  639. INT 13 - HARD DISK - DRIVE DIAGNOSTIC (XT,PS)
  640.     AH = 13h
  641.     DL = drive number (80h = first, 81h = second hard disk)
  642. Return: CF set on error
  643.     CF clear if successful
  644.     AH = status code (see #0159 at AH=01h)
  645.     AL = 00h
  646. SeeAlso: AH=12h"HARD DISK",AH=14h"HARD DISK"
  647. --------d-1313-------------------------------
  648. INT 13 - SyQuest - READ DRIVE PARAMATERS (for DOS 5+)
  649.     AH = 13h
  650.     DL = drive ID (bit 7 set for hard disks)
  651. Return: CF set on error
  652.         AH = status (07h) (see #0159 at AH=01h)
  653.     CF clear if successful
  654.         AH = 00h
  655.         BL = drive type (AT/PS2 floppies only) (see #0167)
  656.         CH = low eight bits of maximum cylinder number
  657.         CL = maximum sector number (bits 5-0)
  658.          high two bits of maximum cylinder number (bits 7-6)
  659.         DH = maximum head number
  660.         DL = number of drives
  661.         ES:DI -> drive parameter table (floppies only)
  662. Notes:    the return values are identical to the standard INT 13/AH=08h, but the
  663.       number of drives is not limited to 2, so
  664.     scanning all possible drive numbers with the Read DASD Type call
  665.       (AH=15h) should generally be preferred to determine the number of
  666.       drives attached to the system.
  667. SeeAlso: AH=08h"PC",AH=12h"SyQuest",AH=15h,AH=59h"SyQuest"
  668. --------B-1314-------------------------------
  669. INT 13 - HARD DISK - CONTROLLER INTERNAL DIAGNOSTIC
  670.     AH = 14h
  671. Return: CF set on error
  672.     CF clear if successful
  673.     AH = status code (see #0159 at AH=01h)
  674.     AL = 00h
  675. SeeAlso: AH=12h,AH=13h
  676. --------B-1315-------------------------------
  677. INT 13 - DISK - GET DISK TYPE (XT 1/10/86 or later,XT286,AT,PS)
  678.     AH = 15h
  679.     DL = drive number (bit 7 set for hard disk)
  680. Return: CF clear if successful
  681.         AH = type code
  682.         00h no such drive
  683.         01h floppy without change-line support
  684.         02h floppy (or other removable drive) with change-line support
  685.         03h hard disk
  686.             CX:DX = number of 512-byte sectors
  687.     CF set on error
  688.         AH = status (see #0159 at AH=01h)
  689. Note:    SyQuest can report type 01h or 02h for 'hard disks', since its media
  690.       is removable
  691. SeeAlso: AH=08h,AH=16h,AH=17h,AH=19h"SCSI"
  692. --------B-1316-------------------------------
  693. INT 13 - FLOPPY DISK - DETECT DISK CHANGE (XT 1/10/86 or later,XT286,AT,PS)
  694.     AH = 16h
  695.     DL = drive number (00h-7Fh)
  696. Return: CF clear if change line inactive
  697.         AH = 00h (disk not changed)
  698.     CF set if change line active
  699.         AH = status
  700.         01h invalid command (SyQuest)
  701.         06h change line active or not supported
  702.         80h drive not ready or not present
  703. Notes:    call AH=15h first to determine whether the drive supports a change
  704.       line
  705.     this call also clears the media-change status, so that a disk change
  706.       is only reported once
  707. BUG:    some versions of Award 386 Modular BIOS and AMI BIOS fail to clear
  708.       the media-change status
  709. SeeAlso: AH=15h,AH=49h
  710. --------B-1317-------------------------------
  711. INT 13 - FLOPPY DISK - SET DISK TYPE FOR FORMAT (AT,PS)
  712.     AH = 17h
  713.     AL = format type
  714.         01h = 320/360K disk in 360K drive
  715.         02h = 320/360K disk in 1.2M drive
  716.         03h = 1.2M disk in 1.2M drive
  717.         04h = 720K disk in 720K or 1.44M drive
  718.     DL = drive number
  719. Return: CF set on error
  720.     CF clear if successful
  721.     AH = status (see #0159 at AH=01h)
  722. Note:    this function does not handle 1.44M drives; use AH=18h instead
  723. SeeAlso: AH=15h,AH=18h
  724. --------d-131700-----------------------------
  725. INT 13 - Future Domain SCSI CONTROLLER - GET INQUIRY INFO FROM SCSI DEVICE
  726.     AX = 1700h
  727.     CL = length of buffer
  728.     DL = hard drive ID
  729.     ES:BX -> buffer for info (see #0168)
  730. Return: CF clear if successful
  731.         CH = number of bytes returned in buffer???
  732.     CF set on error
  733.         AH = status code (see #0159 at AH=01h)
  734. Notes:    this function is not available with 8-bit controller ROM versions < 7.0
  735.     information block bytes 5-n are vendor-specific in older SCSI devices
  736.     the TMC-950 does not support any Future Domain BIOS calls; instead,
  737.       it provides a full CAM implementation (see INT 4F/AX=8100h)
  738. SeeAlso: AH=18h"SCSI",AH=1Bh"SCSI"
  739.  
  740. Format of Future Domain SCSI inquiry information block:
  741. Offset    Size    Description    (Table 0168)
  742.  00h    BYTE    device type
  743.         bits 0-4: peripheral device type (see #0169)
  744.         bits 5-7: peripheral qualifier (see #0170)
  745.  01h    BYTE    device type modifier
  746.         bits 0-6: device type modifier
  747.         bit 7: removable medium
  748.  02h    BYTE    SCSI version (see #0171)
  749.  03h    BYTE    data format/capabilities (see #0172)
  750.  04h    BYTE    additional data length (total remaining bytes)
  751.  05h  2 BYTEs    reserved
  752.  07h    BYTE    device capabilities (see #0173)
  753.  08h  8 BYTEs    vendor identification (space-padded ASCII)
  754.  10h  8 BYTEs    product identification (space-padded ASCII)
  755.  20h  4 BYTEs    product revision level (space-padded ASCII)
  756.  24h 20 BYTEs    vendor specific
  757.  38h 40 BYTEs    reserved
  758.  60h    var    vendor specific parameters
  759.  
  760. (Table 0169)
  761. Values for Future Domain SCSI peripheral device type:
  762.  00h    direct-access device (e.g., magnetic disk)
  763.  01h    sequential-access device (e.g., magnetic tape)
  764.  02h    printer device
  765.  03h    processor device
  766.  04h    write-once device (e.g., some optical disks)
  767.  05h    CD-ROM device
  768.  06h    scanner device
  769.  07h    optical memory device (e.g., some optical disks)
  770.  08h    medium changer device (e.g., jukeboxes)
  771.  09h    communications device
  772.  0Ah    (defined by ASC IT8)
  773.  0Bh    (defined by ASC IT8)
  774.  0Ch-1Eh reserved
  775.  1Fh    unknown or no device type
  776.  
  777. (Table 0170)
  778. Values for Future Domain SCSI peripheral qualifier:
  779.  000b    device is currently connected to this logical unit and available
  780.  001b    target is capable of supporting the specified peripheral, but the
  781.       physical device is not currently connected to this logical unit
  782.  010b    reserved
  783.  011b    target can't support a physical device on this logical unit
  784.  1xxb    vendor specific
  785.  
  786. Bitfields for Future Domain SCSI version:
  787. Bit(s)    Description    (Table 0171)
  788.  0-2    ANSI-approved version
  789.     000 device might or might not comply to ANSI standard
  790.     001 device complies to ANSI SCSI-1
  791.     010 device complies to ANSI SCSI-2
  792.     other reserved
  793.  3-5    ECMA version
  794.  6-7    ISO version
  795.  
  796. Bitfields for Future Domain SCSI data format/capabilities:
  797. Bit(s)    Description    (Table 0172)
  798.  0-2    response data format
  799.     000 information block is as specified in SCSI-1
  800.     001 information block is as specified in CCS
  801.     010 information block is as specified in SCSI-2
  802.     other reserved
  803.  4-5    reserved
  804.  6    terminate I/O process supported
  805.  7    asynchronous event notification supported
  806.  
  807. Bitfields for Future Domain SCSI device capabilities:
  808. Bit(s)    Description    (Table 0173)
  809.  0    device responds to RESET with a hard RESET
  810.  1    tagged command queuing supported
  811.  2    reserved
  812.  3    linked commands supported
  813.  4    synchronous data transfer supported
  814.  5    16-transfers supported
  815.  6    32-transfers supported
  816.  7    relative addressing supported
  817. --------B-1318-------------------------------
  818. INT 13 - DISK - SET MEDIA TYPE FOR FORMAT (AT model 3x9,XT2,XT286,PS)
  819.     AH = 18h
  820.     DL = drive number
  821.     CH = lower 8 bits of highest cylinder number (number of cylinders - 1)
  822.     CL = sectors per track (bits 0-5)
  823.          top 2 bits of highest cylinder number (bits 6,7)
  824. Return: AH = status
  825.         00h requested combination supported
  826.         01h function not available
  827.         0Ch not supported or drive type unknown
  828.         80h there is no disk in the drive
  829.     ES:DI -> 11-byte parameter table (see #0929 at INT 1E)
  830. Note:    this function does not set the INT 1E vector to point at the returned
  831.       parameter table; it is the caller's responsibility to do so
  832. SeeAlso: AH=05h,AH=07h,AH=17h,INT 1E
  833. --------d-1318-------------------------------
  834. INT 13 - Future Domain SCSI BIOS - GET SCSI CONTROLLER INFORMATION
  835.     AH = 18h
  836.     DL = hard drive ID
  837. Return: CF set on error
  838.         AH = status code (see #0159 at AH=01h)
  839.     CF clear if successful
  840.         AX = 4321h (magic number)
  841.         CX = controller family code (see #0174)
  842.         ---if family code=0200h
  843.         DH = number of exclusively ROM-controlled SCSI devices
  844.         DL = canonical SCSI device number for specified drive
  845.         ---if family code <> 0200h
  846.         BH = number of exclusively ROM-controlled SCSI devices
  847.         BL = canonical SCSI device number for specified drive
  848. Notes:    also sets an internal flag (non-resettable) which prevents some
  849.       controller messages from being displayed, allows writes to
  850.       removable devices (use caution!), and enables the INT 13 interface
  851.       for more than one drive (i.e. DL >= 81h) in at least some ROM
  852.       versions
  853.     the TMC-950 does not support any Future Domain BIOS calls; instead,
  854.       it provides a full CAM implementation (see INT 4F/AX=8100h)
  855. SeeAlso: AH=05h"SCSI",AX=1700h"SCSI",AH=1Bh"SCSI",INT 4F/AX=8100h
  856.  
  857. (Table 0174)
  858. Values for Future Domain SCSI controller family code:
  859.  0200h    TMC-1680/? (ROM 3.0)
  860.  0203h    TMC-1650/1660/1670/1680 (ROM 2.0)
  861.  040Ah    TMC-820/830/840/850/860/870/875/880/885 (ROM <= 6.0A)
  862.  050Dh    TMC-840/841/880/881 (ROM 5.2D)
  863.  0700h    TMC-830/850/860/875/885 (ROM 7.0)
  864. --------d-1318--CX5055-----------------------
  865. INT 13 - PU_1700.COM - INSTALLATION CHECK
  866.     AH = 18h
  867.     CX = 5055h ('PU')
  868.     DL = 00h
  869. Return: AX = 7570h ('up') if PU_1700 is installed
  870. Program: PU_1700 is a BIOS enhancer from PU Service Systems which permits
  871.       formatting diskettes at higher capacity (1.78M instead of 1.44M)
  872. SeeAlso: AX=057Fh/SI=324Dh"2M"
  873. --------d-1318--CXD2C9-----------------------
  874. INT 13 - XDF.COM - API
  875.     AH = 18h
  876.     CX = D2C9h ("R"+80h, "I"+80h = Roger Ivey)
  877.     DX = 0000h
  878.     BX = function
  879.         0000h installation check
  880.           Return: AH = 0Ch
  881.               CX = 7269h ("ri" = Roger Ivey)
  882.               ES = segment of driver
  883.               CF set
  884.         2F64h ("/d") disable the driver
  885.           Return: AH = 0Ch
  886.               ES:BX = pointer to activation flag (it is set to 0:
  887.                   set it to 1 to enable the driver again)
  888.               CX = 7269h
  889.               CF set
  890.         2F75h ("/u") unload the driver (restore interrupts & free memory)
  891.           Return: AH = 0Ch
  892.               DL = 55h ("U") if successful
  893.                  = 00h       if fails
  894.               CX = 7269h
  895.               ES = segment of driver
  896.               CF set
  897.               AL, BX, DH, and DI destroyed
  898. Program: XDF is a TSR provided with PC-DOS 7.0 to support XDF 1.84M disks,
  899.       developed by Roger D. Ivey
  900. Note:    After disabling or enabling the driver, a disk change must be performed
  901.       or simulated to reset the driver.
  902. --------B-1319-------------------------------
  903. INT 13 - FIXED DISK - PARK HEADS ON ESDI DRIVE (XT286,PS)
  904.     AH = 19h
  905.     DL = drive
  906. Return: CF set on error
  907.     CF clear if successful
  908.     AH = status (see #0159 at AH=01h)
  909. SeeAlso: AH=11h
  910. --------d-1319-------------------------------
  911. INT 13 - Future Domain SCSI CONTROLLER - REINITIALIZE DRIVE
  912.     AH = 19h
  913.     DL = hard drive ID
  914. Return: CF set on error
  915.         AH = status code (see #0159 at AH=01h)
  916.     CF clear if successful
  917.         AH = disk type (03h = fixed disk)
  918.         CX:DX = number of 512-byte sectors
  919. Notes:    sends SCSI Read Capacity command to get number of logical blocks and
  920.       adjusts the result for 512-byte sectors
  921.     displays either "Error in Read Capacity Command" or "nnn Bytes per
  922.       sector" (nnn=256 or 512, the only sizes supported in the translation
  923.       code)
  924.     should probably be called when a removable device has its media changed
  925.     returns the same values as AH=15h
  926.     the TMC-950 does not support any Future Domain BIOS calls; instead,
  927.       it provides a full CAM implementation (see INT 4F/AX=8100h)
  928. SeeAlso: AH=15h,AH=1Ah,INT 4F/AX=8100h
  929. --------d-131A-------------------------------
  930. INT 13 - ESDI FIXED DISK - FORMAT UNIT (PS)
  931.     AH = 1Ah
  932.     AL = defect table entry count
  933.     CL = format modifiers (see #0175)
  934.     DL = drive (80h,81h)
  935.     ES:BX -> defect table (see #0176), ignored if AL=00h
  936. Return: CF set on error
  937.     CF clear if successful
  938.     AH = status (see #0159 at AH=01h)
  939. Note:    if periodic interrupt selected, INT 15/AH=0Fh is called after each
  940.       cylinder is formatted
  941. SeeAlso: AH=07h,INT 15/AH=0Fh
  942.  
  943. Bitfields for ESDI format modifiers:
  944. Bit(s)    Description    (Table 0175)
  945.  4    generate periodic interrupt
  946.  3    perform surface analysis
  947.  2    update secondary defect map
  948.  1    ignore secondary defect map
  949.  0    ignore primary defect map
  950.  
  951. Format of defect table entry [array]:
  952. Offset    Size    Description    (Table 0176)
  953.  00h  3 BYTEs    relative sector address (little-endian)
  954.  03h    BYTE    flags and defect count
  955.         bit 7: last logical sector on track
  956.         bit 6: first logical sector on track
  957.         bit 5: last logical sector on cylinder
  958.         bit 4: logical sectors are pushed onto next track
  959.         bits 3-0: number of defects pushed from previous cylinder
  960. --------d-131A-------------------------------
  961. INT 13 - Future Domain SCSI CONTROLLER - GET SCSI PARTIAL MEDIUM CAPACITY
  962.     AH = 1Ah
  963.     CH = track (bits 8,9 in high bits of CL)
  964.     CL = sector (01h to number of sectors/track for drive)
  965.     DH = head
  966.     DL = hard drive ID
  967. Return: CF set on error
  968.     AH = status code (see #0159 at AH=01h)
  969.     CX:DX = logical block number of last quickly-accessible block after
  970.         given block
  971. Notes:    sends SCSI Read Capacity command with the PMI bit set to obtain the
  972.       logical block address of the last block after which a substantial
  973.       delay in data transfer will be encountered (usually the last block
  974.       on the current cylinder).  No translation to 512 byte sectors is
  975.       performed on the result if data is stored on the disk in other than
  976.       512 byte sectors.
  977.     the TMC-950 does not support any Future Domain BIOS calls; instead,
  978.       it provides a full CAM implementation (see INT 4F/AX=8100h)
  979. SeeAlso: AH=15h,AH=19h"SCSI"
  980. --------d-131B-------------------------------
  981. INT 13 - ESDI FIXED DISK - GET MANUFACTURING HEADER
  982.     AH = 1Bh
  983.     AL = number of sectors to read
  984.     DL = drive
  985.     ES:BX -> buffer for manufacturing header (defect list)
  986. Return: CF set on error
  987.     CF clear if successful
  988.     AH = status
  989. Note:    manufacturing header format (Defect Map Record format) can be found
  990.       in IBM 70MB, 115MB Fixed Disk Drives Technical Reference
  991.     the first sector read contains the manufacturing header with the number
  992.       of defect entries and the beginning of the defect map; the remaining
  993.       sectors contain the remainder of the defect map
  994. --------d-131B-------------------------------
  995. INT 13 - Future Domain SCSI CONTROLLER - GET POINTER TO SCSI DISK INFO BLOCK
  996.     AH = 1Bh
  997.     DL = hard drive ID
  998. Return: CF set on error
  999.         AH = status code (see #0159 at AH=01h)
  1000.     CF clear if successful
  1001.         ES:BX -> SCSI disk information block (see #0177)
  1002. Notes:    also sets a non-resettable flag which prevents some controller messages
  1003.       from being displayed
  1004.     the TMC-950 does not support any Future Domain BIOS calls; instead,
  1005.       it provides a full CAM implementation (see INT 4F/AX=8100h)
  1006. SeeAlso: AH=18h"SCSI",AH=1Ch"SCSI"
  1007.  
  1008. Format of Future Domain SCSI disk information block:
  1009. Offset    Size    Description    (Table 0177)
  1010.  00h    BYTE    drive physical information (see #0178)
  1011.  01h    WORD    translated number of cylinders
  1012.  03h    BYTE    translated number of heads
  1013.  04h    BYTE    translated number of sectors per track (17, 34, or 63)
  1014.  05h    BYTE    drive address
  1015.         bits 0-2: logical unit number
  1016.         bits 3-5: device number
  1017.  06h    BYTE    01h at initialization
  1018.  07h    BYTE    sense code byte 00h, or extended sense code byte 0Ch
  1019.  08h    BYTE    00h
  1020.  09h    BYTE    00h or extended sense code byte 02h (sense key)
  1021.  0Ah    BYTE    00h
  1022.  0Bh 10 BYTEs    copy of Command Descriptor Block (CDB) (see #2868,#2869)
  1023.  15h    DWORD    translated number of sectors on device
  1024.  
  1025. Bitfields for Future Domain SCSI device physical information:
  1026. Bit(s)    Description    (Table 0178)
  1027.  0    ???
  1028.  1    device uses parity
  1029.  2    256 bytes per sector instead of 512
  1030.  3    don't have capacity yet???
  1031.  4    disk is removable
  1032.  5    logical unit number is not present
  1033. --------d-131C-------------------------------
  1034. INT 13 - Future Domain SCSI CONTROLLER - GET POINTER TO FREE CONTROLLER RAM
  1035.     AH = 1Ch
  1036.     DL = hard drive ID (any valid SCSI hard disk)
  1037. Return: CF set on error
  1038.         AH = status code (see #0159 at AH=01h)
  1039.     CF clear if successful
  1040.         ES:BX -> first byte of free RAM on controller
  1041. Notes:    the Future Domain TMC-870 contains 1024 bytes of RAM at offsets 1800h
  1042.       to 1BFFh on-board the controller for storing drive information and
  1043.       controller status; ES:BX points to the first byte available for other
  1044.       uses
  1045.     ES contains the segment at which the controller resides; the
  1046.       controller's two memory-mapped I/O ports are at offsets 1C00h, 1E00h
  1047. SeeAlso: AH=1Bh"SCSI"
  1048. --------d-131C-------------------------------
  1049. INT 13 U - ESDI FIXED DISK - ???
  1050.     AH = 1Ch
  1051.     AL = subfunction (01h-06h)
  1052.     DL = drive (80h,81h)
  1053.     ???
  1054. Return: ???
  1055. Note:    these functions perform a controller command 0612h without DMA
  1056. SeeAlso: AX=1C08h,PORT 3510h"ESDI"
  1057. --------d-131C08-----------------------------
  1058. INT 13 U - ESDI FIXED DISK - GET COMMAND COMPLETION STATUS
  1059.     AX = 1C08h
  1060.     DL = drive (80h,81h)
  1061.     ES:BX -> buffer for Command Complete Status Block (see #0179)
  1062. Return: CF set on error
  1063.     CF clear if successful
  1064.     AH = status (see #0159 at AH=01h)
  1065. SeeAlso: AX=1C09h,AX=1C0Ah,PORT 3510h"ESDI"
  1066.  
  1067. Format of ESDI Command Complete Status Block:
  1068. Offset    Size    Description    (Table 0179)
  1069.  00h    BYTE    07h
  1070.  01h    BYTE    size of block in words (07h)
  1071.  02h    BYTE    command error code (see #0180)
  1072.  03h    BYTE    command status code (see #0181)
  1073.  04h    BYTE    device error code, group 1 (see #0182)
  1074.  05h    BYTE    device error flags, group 2 (see #0183)
  1075.  06h    WORD    number of unprocessed sectors due to abnormal termination
  1076.  08h    DWORD    last Relative Sector Address processed by command
  1077.  0Ch    WORD    number of sectors corrected by ECC codes
  1078.  
  1079. (Table 0180)
  1080. Values for ESDI command error code:
  1081.  00h    successful
  1082.  01h    parameter invalid
  1083.  02h    unknown function
  1084.  03h    unsupported command
  1085.  04h    command cancelled
  1086.  05h    unknown function
  1087.  06h    controller diagnostics failed
  1088.  07h    formatting failed
  1089.  08h    format error in primary map
  1090.  09h    format error in secondary map
  1091.  0Ah    diagnostic failure during formatting
  1092.  0Bh    warning: secondary map too large during formatting
  1093.  0Ch    warning: non-zero defect
  1094.  0Dh    system checksum error during formatting
  1095.  0Eh    warning: incompatible device
  1096.  0Fh    warning: push table overflowed
  1097.  10h    warning: more than 15 sectors pushed to next cylinder
  1098.  11h    internal hardware error
  1099.  12h    warning: errors found while verifying sectors
  1100.  13h    invalid device
  1101.  FFh    device error
  1102.  
  1103. (Table 0181)
  1104. Values for ESDI command status code:
  1105.  01h    successful
  1106.  03h    successful after ECC
  1107.  05h    successful after retries
  1108.  06h    format partially completed
  1109.  07h    successful after ECC and retries
  1110.  08h    command completed with warning (see #0180)
  1111.  09h    abort complete
  1112.  0Ah    reset complete
  1113.  0Bh    data transfer ready (no status block)
  1114.  0Ch    command completed with failure (see #0182,#0183)
  1115.  0Dh    DMA error
  1116.  0Eh    command block error (see #0180)
  1117.  0Fh    bad attention code
  1118. SeeAlso: #0182
  1119.  
  1120. (Table 0182)
  1121. Values for ESDI device error code, group 1:
  1122.  00h    successful
  1123.  01h    seek fault detected by device
  1124.  02h    interface fault
  1125.  03h    sector ID not found
  1126.  04h    disk not formatted
  1127.  05h    unrecoverable ECC error
  1128.  06h    ECC error in sector ID
  1129.  07h    invalid relative sector address
  1130.  08h    timeout
  1131.  09h    sector defective
  1132.  0Ah    disk changed (removable media)
  1133.  0Bh    selection error
  1134.  0Ch    write protected (removable media)
  1135.  0Dh    write fault
  1136.  0Eh    read fault
  1137.  0Fh    no index or sector pulse
  1138.  10h    device not ready
  1139.  11h    seek error detected by adapter
  1140.  12h    bad format
  1141.  13h    volume overflow
  1142.  14h    data address mark not found
  1143.  15h    sector ID not found
  1144.  16h    missing device configuration data
  1145.  17h    first/last relative sector flags missing
  1146.  18h    track empty
  1147.  81h    timeout while waiting for stop
  1148.  82h    timeout while waiting for end of data transfer
  1149.  84h    stopped awaiting data transfer during formatting
  1150.  85h    timeout while waiting for head switch
  1151.  86h    timeout while awaiting DMA completion
  1152. SeeAlso: #0181,#0183
  1153.  
  1154. Bitfields for ESDI device error flags, group 2:
  1155. Bit(s)    Description    (Table 0183)
  1156.  7-5    unused
  1157.  4    ready
  1158.  3    selected
  1159.  2    write fault
  1160.  1    on track 0
  1161.  0    seek/command complete
  1162. SeeAlso: #0182
  1163. --------d-131C09-----------------------------
  1164. INT 13 U - ESDI FIXED DISK - GET DEVICE STATUS
  1165.     AX = 1C09h
  1166.     DL = drive (80h,81h)
  1167.     ES:BX -> buffer for Device Status Block (see #0184)
  1168. Return: CF set on error
  1169.     CF clear if successful
  1170.     AH = status (see #0159 at AH=01h)
  1171. SeeAlso: AX=1C08h,AX=1C0Ah,PORT 3510h"ESDI"
  1172.  
  1173. Format of ESDI Device Status Block:
  1174. Offset    Size    Description    (Table 0184)
  1175.  00h    BYTE    08h
  1176.  01h    BYTE    number of words in block (09h)
  1177.  02h    BYTE    error flags
  1178.  03h    BYTE    unused
  1179.  04h    BYTE    command error code (see #0180)
  1180.  05h    BYTE    command status code (see #0181)
  1181.  06h    WORD    ESDI standard status
  1182.  08h  5 WORDs    ESDI vendor-specific status codes
  1183. --------d-131C0A-----------------------------
  1184. INT 13 U - ESDI FIXED DISK - GET DEVICE CONFIGURATION
  1185.     AX = 1C0Ah
  1186.     DL = drive (80h,81h)
  1187.     ES:BX -> buffer for Drive Configuration Status Block (see #0185)
  1188. Return: CF set on error
  1189.     CF clear if successful
  1190.     AH = status (see #0159 at AH=01h)
  1191. Note:    device configuration format can be found in IBM ESDI Fixed Disk Drive
  1192.       Adapter/A Technical Reference
  1193. SeeAlso: AX=1C08h,AX=1C0Bh,AX=1C0Ch
  1194.  
  1195. Format of ESDI Drive Configuration Status Block:
  1196. Offset    Size    Description    (Table 0185)
  1197.  00h    BYTE    09h
  1198.  01h    BYTE    number of words in block (06h)
  1199.  02h    BYTE    flags
  1200.  03h    BYTE    number of spare sectors per cylinder
  1201.  04h    DWORD    total number of usable sectors
  1202.  08h    WORD    total number of cylinders
  1203.  0Ah    BYTE    tracks per cylinder
  1204.  0Bh    BYTE    sectors per track
  1205. --------d-131C0B-----------------------------
  1206. INT 13 U - ESDI FIXED DISK - GET ADAPTER CONFIGURATION
  1207.     AX = 1C0Bh
  1208.     ES:BX -> buffer for Controller Configuration Status Block (see #0186)
  1209. Return: CF set on error
  1210.     CF clear if successful
  1211.     AH = status (see #0159 at AH=01h)
  1212. SeeAlso: AX=1C0Ch
  1213.  
  1214. Format of ESDI Controller Configuration Status Block:
  1215. Offset    Size    Description    (Table 0186)
  1216.  00h    BYTE    E9h
  1217.  01h    BYTE    number of words in block (06h)
  1218.  02h    WORD    unused (0000h)
  1219.  04h    DWORD    controller microcode revision level
  1220.  08h  2 WORDs    unused (0000h)
  1221. --------d-131C0C-----------------------------
  1222. INT 13 U - ESDI FIXED DISK - GET POS INFORMATION
  1223.     AX = 1C0Ch
  1224.     ES:BX -> buffer for POS Information Status Block (see #0187)
  1225. Return: CF set on error
  1226.     CF clear if successful
  1227.     AH = status (see #0159 at AH=01h)
  1228. SeeAlso: AX=1C0Bh
  1229.  
  1230. Format of ESDI POS Information Status Block:
  1231. Offset    Size    Description    (Table 0187)
  1232.  00h    BYTE    EAh
  1233.  01h    BYTE    number of words in block (05h)
  1234.  02h    WORD    magic value FFDDh
  1235.  04h    BYTE    POS register 3
  1236.  05h    BYTE    POS register 2
  1237.  06h    BYTE    POS register 5 (unused, FFh)
  1238.  07h    BYTE    POS register 4 (unused, FFh)
  1239.  08h    BYTE    POS register 7 (unused, FFh)
  1240.  09h    BYTE    POS register 6 (unused, FFh)
  1241. --------d-131C0D-----------------------------
  1242. INT 13 U - ESDI FIXED DISK - ???
  1243.     AX = 1C0Dh
  1244.     DL = drive (80h,81h)
  1245.     ???
  1246. Return: ???
  1247. Note:    invokes controller command 0614h without DMA
  1248. SeeAlso: AH=1Ch"ESDI",AX=1C0Fh,PORT 3510h"ESDI"
  1249. --------d-131C0E-----------------------------
  1250. INT 13 U - ESDI FIXED DISK - TRANSLATE RBA TO ABA
  1251.     AX = 1C0Eh
  1252.     CH = low 8 bits of cylinder number
  1253.     CL = sector number, high two bits of cylinder number in bits 6 and 7
  1254.     DH = head number
  1255.     DL = drive number (80h,81h)
  1256.     ES:BX -> ABA number
  1257. Return: CF set on error
  1258.     CF clear if successful
  1259.     AH = status (see #0159 at AH=01h)
  1260. Note:    ABA (absolute block address) format can be found in IBM ESDI Adapter
  1261.       Technical Reference by using its Device Configuration Status Block
  1262. SeeAlso: AX=1C08h,AX=1C0Fh,PORT 3510h"ESDI"
  1263. --------d-131C0F-----------------------------
  1264. INT 13 U - ESDI FIXED DISK - ???
  1265.     AX = 1C0Fh
  1266.     DL = drive (80h,81h)
  1267.     ???
  1268. Return: ???
  1269. Note:    invokes controller command 0614h without DMA
  1270. SeeAlso: AH=1Ch"ESDI",AX=1C0Dh,AX=1C12h,PORT 3510h"ESDI"
  1271. --------d-131C12-----------------------------
  1272. INT 13 U - ESDI FIXED DISK - ???
  1273.     AX = 1C12h
  1274.     DL = drive (80h,81h)
  1275.     ???
  1276. Return: ???
  1277. Note:    invokes controller command 0612h without DMA
  1278. SeeAlso: AH=1Ch"ESDI",AX=1C0Fh,PORT 3510h"ESDI"
  1279. --------c-131D-------------------------------
  1280. INT 13 - IBMCACHE.SYS - CACHE STATUS
  1281.     AH = 1Dh
  1282.     AL = subfunction
  1283.         01h get status record
  1284.         DL = drive???
  1285.         Return: ES:BX -> status record (see #0188)
  1286.             CF set on error
  1287.                 AH = error code
  1288.         02h set cache status
  1289.         ES:BX -> status record (see #0188)
  1290.         DL = drive???
  1291.         Return: CF set on error
  1292.  
  1293. Format of IBMCACHE.SYS status record:
  1294. Offset    Size    Description    (Table 0188)
  1295.  00h    DWORD    total number of read requests
  1296.  04h    DWORD    total number of hits
  1297.  08h    DWORD    number of physical disk reads
  1298.  0Ch    DWORD    total number of sectors requested by physical disk reads
  1299.  10h  6 BYTEs    ???
  1300.  16h    DWORD    pointer to start of error list (see #0189)
  1301.  1Ah    DWORD    pointer to end of error list
  1302.  1Eh    WORD    ???
  1303.  20h    BYTE    using extended memory if nonzero
  1304.  21h    BYTE    ???
  1305.  22h  4 BYTEs    ASCII version number
  1306.  26h    WORD    cache size in KB
  1307.  28h    WORD    sectors per page
  1308.  
  1309. Format of IBMCACHE.SYS error list:
  1310. Offset    Size    Description    (Table 0189)
  1311.  00h    DWORD    relative block address of bad page
  1312.  04h    BYTE    drive
  1313.  05h    BYTE    sector bit-map
  1314.  06h    WORD    next error
  1315. --------d-131F-------------------------------
  1316. INT 13 - SyQuest - DOOR LATCH/DOOR BUTTON DETECT
  1317.     AH = 1Fh
  1318.     AL = subfunction
  1319.         00h allow media removal
  1320.         01h prevent media removal (lock door)
  1321.     DL = drive ID (bit 7 set for hard disks)
  1322. Return: CF clear if successful
  1323.         AH = 00h
  1324.     CF set on error
  1325.         AH = error code
  1326.         00h successful
  1327.         01h invalid function request
  1328.         80h timeout
  1329.         DDh media change requested
  1330. SeeAlso: AH=12h"SyQuest",AH=13h"SyQuest",AH=59h"SyQuest"
  1331. --------d-1320-------------------------------
  1332. INT 13 - DISK - ??? (Western Digital "Super BIOS")
  1333.     AH = 20h
  1334.     ???
  1335. Return: ???
  1336. Notes:    returns some kind of status related to whether the drive contains its
  1337.       default media type
  1338.     QEMM v6.00 calls INT 13/AX=2000h/DL=81h in some cases
  1339. --------b-1320-------------------------------
  1340. INT 13 U - Compaq, ATAPI Removable Media Device - GET CURRENT MEDIA FORMAT
  1341.     AH = 20h
  1342.     DL = drive number (00h,01h)
  1343. Return: CF clear if successful
  1344.         AL = media type (see #0190)
  1345.         AH = 00h
  1346.     CF set on error
  1347.         AH = error code
  1348.         01h invalid request
  1349.         30h drive does not support media sense
  1350.         31h no such drive / media not present
  1351.         32h non-default media / drive does not supporte media type
  1352. Notes:    this function is supported by the 3/8/93 ROM BIOS, but only partially
  1353.       (AL is always 00h when successful) by the 8/3/93 version
  1354.     this function is also supported by some recent versions of the Phoenix
  1355.       486 BIOS
  1356.  
  1357. (Table 0190)
  1358. Values for Compaq/ATAPI diskette media type:
  1359.  03h    720K  (1M unformatted)
  1360.  04h    1.44M (2M unformatted)
  1361.  06h    2.88M (4M unformatted)
  1362.  0Ch    360K
  1363.  0Dh    1.2M
  1364.  0Eh    Toshiba 3mode
  1365.  0Fh    NEC 3mode (1024-byte sectors)
  1366.  10h    ATAPI Removable Media Device
  1367. --------c-1320-------------------------------
  1368. INT 13 u - QUICKCACHE II v4.20 - DISMOUNT
  1369.     AH = 20h
  1370.     AL = drive (00h = A:, etc. or 7Fh for all removable drives???
  1371.                    or FFh for all drives)
  1372. Return: AX = status (0000h successful)
  1373. Program: QUICKCACHE II is a shareware disk cache by P.R. Glassel and
  1374.       Associates, Inc.
  1375. Desc:    flush any dirty buffers for the specified drive(s) and then discard
  1376.       those sector buffers
  1377. SeeAlso: AH=21h"QUICKCACHE",AH=22h"QUICKCACHE",AH=28h
  1378. --------d-1321-------------------------------
  1379. INT 13 - HARD DISK - PS/1 and newer PS/2 - READ MULTIPLE DISK SECTORS
  1380.     AH = 21h
  1381.     AL = number of sectors to write
  1382.     CH = low byte of 12-bit cylinder number
  1383.     CL = starting sector (bits 0-5) and bits 8-9 of cylinder (bits 6-7)
  1384.     DH = head number (bits 0-5) and bits 10-11 of cylinder (bits 6-7)
  1385.     DL = drive number (80h,81h)
  1386.     ES:BX -> buffer for data to be read
  1387. Return: CF clear if successful
  1388.         ES:BX buffer filled
  1389.     CF set on error
  1390.     AH = status (see #0159 at AH=01h)
  1391. Desc:    read from the disk using the Multiple Block mode available on newer
  1392.       IDE drives and some hard disk controllers, which generates an
  1393.       interrupt only after the end of transferring a group of sectors
  1394.       rather than after each sector
  1395. Notes:    must call AH=24h"PS/1" before using this function
  1396.     input values in CL and DH are not range-checked
  1397.     the byte at address 0040h:0074h is set to the status of the operation
  1398. SeeAlso: AH=02h,AH=22h"PS/1",AH=23h"PS/1",AH=24h"PS/1"
  1399. --------c-1321-------------------------------
  1400. INT 13 u - QUICKCACHE II v4.20 - FLUSH CACHE
  1401.     AH = 21h
  1402. Return: AX = status (0000h successful)
  1403. Desc:    immediately write all dirty sectors back to disk
  1404. SeeAlso: AH=25h"QUICKCACHE",AH=2Eh,AH=2Fh
  1405. --------d-1322-------------------------------
  1406. INT 13 - HARD DISK - PS/1 and newer PS/2 - WRITE MULTIPLE DISK SECTORS
  1407.     AH = 22h
  1408.     AL = number of sectors to write
  1409.     CH = low byte of 12-bit cylinder number
  1410.     CL = starting sector (bits 0-5) and bits 8-9 of cylinder (bits 6-7)
  1411.     DH = head number (bits 0-5) and bits 10-11 of cylinder (bits 6-7)
  1412.     DL = drive number (80h,81h)
  1413.     ES:BX -> buffer containing data to be written
  1414. Return: CF clear if successful
  1415.     CF set on error
  1416.     AH = status (see #0159 at AH=01h)
  1417. Desc:    write to the disk using the Multiple Block mode available on newer
  1418.       IDE drives and some hard disk controllers, which generates an
  1419.       interrupt only after the end of transferring a group of sectors
  1420.       rather than after each sector
  1421. Notes:    must call AH=24h"PS/1" before using this function
  1422.     input values in CL and DH are not range-checked
  1423.     the byte at address 0040h:0074h is set to the status of the operation
  1424. SeeAlso: AH=03h,AH=21h"PS/1",AH=23h"PS/1",AH=24h"PS/1"
  1425. --------c-1322-------------------------------
  1426. INT 13 u - QUICKCACHE II v4.20 - ENABLE/DISABLE CACHE
  1427.     AH = 22h
  1428.     AL = new state (00h disabled, 01h enabled)
  1429. Return: AX = status (0000h successful)
  1430. Note:    enables/disables caching of all drives
  1431. SeeAlso: AH=2Ch,AH=2Dh,AH=32h,AH=33h,AH=A3h,AH=A4h
  1432. --------d-1323-------------------------------
  1433. INT 13 U - HARD DISK - PS/1 and newer PS/2 - SET CONTROLLER FEATURES REGISTER
  1434.     AH = 23h
  1435.     AL = feature number (see #0191)
  1436.     DL = drive number (80h,81h)
  1437.     ???
  1438. Return: CF clear if successful
  1439.     CF set on error
  1440.     AH = status (see #0159 at AH=01h)
  1441. SeeAlso: AH=21h"PS/1",AH=22h"PS/1",AH=24h"PS/1",AH=25h"PS/1"
  1442.  
  1443. (Table 0191)
  1444. Values for PS/1 hard disk feature number:
  1445.  01h    select 8-bit data transfers instead of 16-bit
  1446.  02h    enable write cache
  1447.  22h    Write Same, user-specified area
  1448.  33h    disable retries
  1449.  44h    set number of ECC bytes for read long/write long (see AH=0Ah,AH=0Bh)
  1450.  54h    set cache segments
  1451.  55h    disable lookahead
  1452.  66h    disable reverting to power-on defaults
  1453.  77h    disable error correctioni
  1454.  81h    select 16-bit data transfers (default)
  1455.  82h    disable write cache
  1456.  88h    enable error correction (default)
  1457.  99h    enable retries (default)
  1458.  AAh    enable lookahead
  1459.  BBh    set ECC length for read long/write long to four bytes
  1460.  CCh    enable reverting to power-on defaults
  1461.  DDh    Write Same, entire disk
  1462. SeeAlso: #P144
  1463. --------c-1323-------------------------------
  1464. INT 13 U - QUICKCACHE II v4.20 - GET ??? ADDRESS
  1465.     AH = 23h
  1466. Return: AX = status (0000h successful)
  1467.     ES = segment of ??? data
  1468. --------d-1324-------------------------------
  1469. INT 13 - HARD DISK - PS/1 and newer PS/2 - SET MULTIPLE MODE
  1470.     AH = 24h
  1471.     AL = number of sectors per block (2,4,8,16)
  1472.     DL = drive number (80h,81h)
  1473. Return: CF clear if successful
  1474.     CF set onerror
  1475.     AH = status (see #0159 at AH=01h)
  1476. Desc:    specify how many sectors the controller should transfer as a group
  1477.       between operation-complete interrupts when using the Read Multiple
  1478.       and Write Multiple functions (AH=21h,AH=22h)
  1479. Notes:    set the number of sectors to 0 to disable multiple-transfer mode
  1480.     the maximum value for the block size depends on the fixed disk
  1481.       drive type.  The value is stored in byte 15h of the fixed disk
  1482.       drive parameter table that is created by POST.
  1483.     the byte at address 0040h:0074h is set to status of operation.
  1484. SeeAlso: AH=21h"PS/1",AH=22h"PS/1",AH=23h"PS/1",AH=25h"PS/1"
  1485. --------c-1324-------------------------------
  1486. INT 13 u - QUICKCACHE II v4.20 - SET SECTORS
  1487.     AH = 24h
  1488.     BX = new number of sector buffers in cache
  1489. Return: AX = status
  1490.         0000h successful
  1491.         0001h failed--size adjusted
  1492.         8000h cache cannot be resized while enabled
  1493. SeeAlso: AH=36h
  1494. --------d-1325-------------------------------
  1495. INT 13 - HARD DISK - PS/1 and newer PS/2 - IDENTIFY DRIVE
  1496.     AH = 25h
  1497.     DL = drive number (80h,81h)
  1498.     ES:BX-> 512 byte buffer for reply packet
  1499. Return: CF clear if successful
  1500.     CF set on error
  1501.     AH = status (see #0159 at AH=01h)
  1502.     buffer filled with ATA/IDE-style drive information block (see #0192)
  1503. Desc:    retrieves the 256 words of drive data stored on an IDE hard disk
  1504. Notes:    the byte at address 0040h:0074h is set to the status of the operation
  1505.     IBM officially classifies this function as optional
  1506. SeeAlso: AH=23h"PS/1"
  1507.  
  1508. Format of drive information block:
  1509. Offset    Size    Description    (Table 0192)
  1510.  00h    WORD    general drive configuration (see #0193)
  1511.  02h    WORD    number of cylinders
  1512.  04h    WORD    reserved
  1513.  06h    WORD    number of heads
  1514.  08h    WORD    number of unformatted bytes per track
  1515.  0Ah    WORD    number of unformatted bytes per sector
  1516.  0Ch    WORD    number of sectors per track
  1517.  0Eh  6 BYTEs    vendor unique
  1518.  14h 20 BYTEs    serial number in ASCII, 0000h=not specified)
  1519.  28h    WORD    buffer type
  1520.  2Ah    WORD    buffer size in 512 byte increments (0000h=not specified)
  1521.  2Ch    WORD    number of ECC bytes passed on Read/Write Long cmds
  1522.         0000h = not specified
  1523.  2Eh  8 BYTEs    firmware revision in ASCII, 0000h=not specified
  1524.  36h 40 BYTEs    model number in ASCII, 0000h=not specified
  1525.  5Eh    WORD    bits 15-8  Vendor Unique
  1526.         bits 7-0  00h = Read/Write Multiple commands not implemented
  1527.               xxh = Maximum number of sectors that can be
  1528.               transferred per interrupt on Read and Write
  1529.               Multiple commands
  1530.  60h    WORD    0000h = cannot perform doubleword I/O
  1531.         0001h = can perform doubleword I/O
  1532.  62h    WORD    capabilities
  1533.         bit 15-9  0=reserved
  1534.         bit 8  1=DMA Supported
  1535.         bit 7-0     Vendor Unique
  1536.  64h    WORD    reserved
  1537.  66h    WORD    bits 15-8 PIO data transfer cycle timing mode
  1538.         bits 7-0  Vendor Unique
  1539.  68h    WORD    bits 15-8 DMA data transfer cycle timing mode
  1540.         bits 7-0  Vendor Unique
  1541.  6Ah    WORD    bits 15-1 reserved
  1542.         bit 0    1=the fields reported in tranlation mode are valid
  1543.             0=the fields reported in translation mode may be valid
  1544.  6Ch    WORD    number of current cylinders
  1545.  6Eh    WORD    number of current heads
  1546.  70h    WORD    number of current sectors per track
  1547.  72h    DWORD    current capacity in sectors
  1548.  76h    WORD    reserved
  1549.  78h 136 BYTEs    not defined by ATA spec 2.6
  1550. 100h 64 BYTEs    vendor unique
  1551. 140h 96 BYTEs    reserved
  1552. Note:    the above description is as in the ATA (AT Attachment) Specification.
  1553. SeeAlso: #P126
  1554.  
  1555. Bitfields for general drive configuration:
  1556. Bit(s)    Description    (Table 0193)
  1557.  15    0   reserved for non-magnetic drives
  1558.  14    format speed tolerance gap required
  1559.  13    track offset option available
  1560.  12    data strobe offset option available
  1561.  11    rotational speed tolerance is > 0.5%
  1562.  10    disk transfer rate > 10 Mbs
  1563.  9    disk transfer rate > 5Mbs but <= 10Mbs
  1564.  8    disk transfer rate <= 5Mbs
  1565.  7    removable cartridge drive
  1566.  6    fixed drive
  1567.  5    spindle motor control option implemented
  1568.  4    head switch time > 15 usec
  1569.  3    not MFM encoded
  1570.  2    soft sectored
  1571.  1    hard sectored
  1572.  0    reserved (0)
  1573. --------c-1325-------------------------------
  1574. INT 13 u - QUICKCACHE II v4.20 - SET FLUSH INTERVAL
  1575.     AH = 25h
  1576.     BX = interval
  1577. Return: AX = status (0000h successful)
  1578. Desc:    specify how often the cache should write dirty buffers to disk when
  1579.       buffered writes are enabled
  1580. SeeAlso: AH=21h"QUICKCACHE",AH=2Ch,AH=2Eh
  1581. --------c-1326-------------------------------
  1582. INT 13 U - QUICKCACHE II v4.20 - UNINSTALL
  1583.     AH = 26h
  1584. Return: AX = status
  1585.         0000h successful
  1586.         0001h-00FFh interrupt vector which was hooked by another TSR
  1587. SeeAlso: AH=27h
  1588. --------c-1327--BX0000-----------------------
  1589. INT 13 u - QUICKCACHE II v4.20 - INSTALLATION CHECK
  1590.     AH = 27h
  1591.     BX = 0000h
  1592. Return: AX = 0000h if installed
  1593.     BX nonzero if installed
  1594.         BH = major version
  1595.         BL = binary minor version
  1596. Program: QUICKCACHE II is a shareware disk cache by P.R. Glassel and
  1597.       Associates, Inc.
  1598. SeeAlso: AH=26h,AH=A0h,INT 16/AX=FFA5h/CX=1111h
  1599. --------c-1328-------------------------------
  1600. INT 13 U - QUICKCACHE II v4.20 - SET AUTOMATIC DISMOUNT
  1601.     AH = 28h
  1602.     AL = new state (00h disabled, 01h enabled)
  1603. Return: AX = status (0000h successful)
  1604. SeeAlso: AH=20h"QUICKCACHE"
  1605. --------c-1329-------------------------------
  1606. INT 13 U - QUICKCACHE II v4.20 - NOP
  1607.     AH = 29h
  1608. Return: AX = 0000h
  1609. --------c-132A-------------------------------
  1610. INT 13 u - QUICKCACHE II v4.20 - SET BUFFER SIZE
  1611.     AH = 2Ah
  1612.     AL = buffer size (1-30)
  1613. Return: AX = status (0000h successful)
  1614. Desc:    specify the number of cache sector buffers to dedicate to buffered read
  1615.       and write operations
  1616. SeeAlso: AH=2Ch,AH=2Dh,AH=39h,AH=3Ah
  1617. --------c-132B-------------------------------
  1618. INT 13 U - QUICKCACHE II v4.20 - DRIVE ACCESS SOUNDS
  1619.     AH = 2Bh
  1620.     AL = new state (00h disabled, 01h enabled)
  1621. Return: AX = status (0000h successful)
  1622. --------c-132C-------------------------------
  1623. INT 13 u - QUICKCACHE II v4.20 - SET BUFFERED WRITES
  1624.     AH = 2Ch
  1625.     AL = new state (00h disabled, 01h enabled)
  1626. Return: AX = status (0000h successful)
  1627. Desc:    specify whether the cache should delay disk writes
  1628. Note:    this function enables or disables delayed writes for all drives; use
  1629.       AH=38h to change a single drive
  1630. SeeAlso: AH=25h"QUICKCACHE",AH=2Dh,AH=2Eh,AH=38h
  1631. --------c-132D-------------------------------
  1632. INT 13 u - QUICKCACHE II v4.20 - SET BUFFERED READ
  1633.     AH = 2Dh
  1634.     AL = new state (00h disabled, 01h enabled)
  1635. Return: AX = status (0000h successful)
  1636. Desc:    specify whether the cache should attempt to read ahead of actual
  1637.       requests
  1638. Note:    this function enables or disables read-ahead for all drives; use AH=37h
  1639.       to change a single drive
  1640. SeeAlso: AH=2Ch,AH=37h
  1641. --------c-132E-------------------------------
  1642. INT 13 u - QUICKCACHE II v4.20 - SET FLUSH COUNT
  1643.     AH = 2Eh
  1644.     BX = flush count
  1645. Return: AX = status (0000h successful)
  1646. Desc:    specify how many dirty sectors the cache should write after each flush
  1647.       interval (see AH=25h"QUICKCACHE") when buffered writes are enabled
  1648. SeeAlso: AH=21h"QUICKCACHE",AH=25h"QUICKCACHE",AH=2Ch
  1649. --------c-132F-------------------------------
  1650. INT 13 - QUICKCACHE II v4.20 - FORCE IMMEDIATE INCREMENTAL FLUSH
  1651.     AH = 2Fh
  1652. Return: AX = status (0000h successful)
  1653. Desc:    immediately flush up to "flushcount" dirty sectors to disk as if the
  1654.       flush interval had expired
  1655. SeeAlso: AH=21h"QUICKCACHE"
  1656. --------c-1330-------------------------------
  1657. INT 13 u - QUICKCACHE II v4.20 - GET INFO
  1658.     AH = 30h
  1659.     AL = what to get
  1660.         00h system info (see #0194)
  1661.         01h drive info (see #0195)
  1662.         02h access frequency (array of 30 words)
  1663.         03h drive index
  1664.         (array of 32 bytes indicating BIOS drive for DOS drive)
  1665.     DS:DX -> buffer for info
  1666. Return: AX = status (0000h successful, 8000h invalid info specifier)
  1667. Program: QUICKCACHE II is a shareware disk cache by P.R. Glassel and
  1668.       Associates, Inc.
  1669.  
  1670. Format of QUICKCACHE II system info:
  1671. Offset    Size    Description    (Table 0194)
  1672.  00h    BYTE    flag: cache enabled
  1673.  01h    BYTE    flag: buffered writes enabled
  1674.  02h    BYTE    flag: buffered reads enabled
  1675.  03h    BYTE    flag: sounds enabled
  1676.  04h    BYTE    flag: autodismount enabled
  1677.  05h    BYTE    ???
  1678.  06h    BYTE    flag: ???
  1679.  07h    BYTE    flag: ???
  1680.  08h    BYTE    flag: "em_assigned"
  1681.  09h    BYTE    flag: emulated EMS
  1682.  0Ah    BYTE    single sector bonus
  1683.  0Bh    BYTE    "sticky_max"
  1684.  0Ch    BYTE    write sector bonus
  1685.  0Dh    BYTE    bonus threshold
  1686.  0Eh    WORD    flush interval
  1687.  10h    WORD    flush count
  1688.  12h    WORD    reserve pool size
  1689.  14h    WORD    remaining space in reserve pool
  1690.  16h    WORD    required free memory
  1691.  18h    WORD    total cache sectors
  1692.  1Ah    WORD    dirty cache sectors
  1693.  1Ch    BYTE    trace buffer size
  1694.  1Dh    BYTE    reserved (padding)
  1695. SeeAlso: #0195
  1696.  
  1697. Format of QUICKCACHE II drive info [16-element array, one element]:
  1698. Offset    Size    Description    (Table 0195)
  1699.  00h    BYTE    DOS drive number
  1700.  01h    BYTE    BIOS drive number
  1701.  02h    BYTE    maximum sector number
  1702.  03h    BYTE    maximum head number
  1703.  04h    BYTE    read buffer size
  1704.  05h    BYTE    write buffer size
  1705.  06h    BYTE    last status
  1706.  07h    BYTE    flag: enabled
  1707.  08h    BYTE    flag: buffered write enabled
  1708.  09h    BYTE    flag: buffered read enabled
  1709.  0Ah    BYTE    flag: in use (drive info is valid)
  1710.  0Bh    BYTE    flag: cylinder flush
  1711.  0Ch    BYTE    reserved (padding)
  1712.  0Dh    BYTE    sectors per track
  1713.  0Eh    WORD    sector size
  1714.  10h    WORD    sectors assigned
  1715.  12h    WORD    dirty sectors
  1716.  14h    WORD    reserved sectors
  1717.  16h    WORD    number of read errors
  1718.  18h    WORD    number of write errors
  1719.  1Ah    DWORD    "rio_count"
  1720.  1Eh    DWORD    number of cache misses
  1721.  22h    DWORD    "wio_count"
  1722.  26h    DWORD    "dio_count"
  1723. SeeAlso: #0194
  1724. --------c-1331-------------------------------
  1725. INT 13 U - QUICKCACHE II v4.20 - RESERVE MEMORY
  1726.     AH = 31h
  1727.     BX = number of paragraphs of conventional memory to reserve for apps
  1728. Return: AX = status (0000h successful)
  1729. --------c-1332-------------------------------
  1730. INT 13 U - QUICKCACHE II v4.20 - ENABLE CACHING FOR SPECIFIC DRIVE
  1731.     AH = 32h
  1732.     AL = drive number (00h=A:)
  1733. Return: AX = status (0000h successful)
  1734. SeeAlso: AH=22h"QUICKCACHE",AH=33h
  1735. --------c-1333-------------------------------
  1736. INT 13 U - QUICKCACHE II v4.20 - DISABLE CACHING FOR SPECIFIC DRIVE
  1737.     AH = 33h
  1738.     AL = drive number (00h=A:)
  1739. Return: AX = status (0000h successful)
  1740. SeeAlso: AH=22h"QUICKCACHE",AH=32h
  1741. --------c-1334-------------------------------
  1742. INT 13 U - QUICKCACHE II v4.20 - SECTOR LOCKING
  1743.     AH = 34h
  1744.     AL = function
  1745.         00h end sector locking/unlocking
  1746.         01h lock all accessed sectors into cache
  1747.         02h unlock all accessed sectors and discard from cache
  1748. Return: AX = status (0000h successful)
  1749. SeeAlso: AH=20h"QUICKCACHE",AH=35h
  1750. --------c-1335-------------------------------
  1751. INT 13 U - QUICKCACHE II v4.20 - SET LOCK POOL SIZE
  1752.     AH = 35h
  1753.     BX = number of sectors in lock pool
  1754. Return: AX = status (0000h successful)
  1755. Desc:    specify the number of cache sector buffers which may be dedicated to
  1756.       data locked into the cache
  1757. SeeAlso: AH=34h
  1758. --------c-1336-------------------------------
  1759. INT 13 U - QUICKCACHE II v4.20 - SET TRACE BUFFER SIZE
  1760.     AH = 36h
  1761.     AL = new size of trace buffer
  1762. Return: AX = status (0000h successful)
  1763. Note:    called with AL=05h during an INT 13/AH=24h"QUICKCACHE" call
  1764. SeeAlso: AH=24h"QUICKCACHE"
  1765. --------c-1337-------------------------------
  1766. INT 13 U - QUICKCACHE II v4.20 - SET BUFFERED READS FOR SPECIFIC DRIVE
  1767.     AH = 37h
  1768.     AL = new state (00h disabled, else enabled)
  1769.     DL = drive number (00h = A:)
  1770. Return: AX = status (0000h successful)
  1771. SeeAlso: AH=2Dh,AH=38h
  1772. --------c-1338-------------------------------
  1773. INT 13 U - QUICKCACHE II v4.20 - SET BUFFERED WRITES FOR SPECIFIC DRIVE
  1774.     AH = 38h
  1775.     AL = new state (00h disabled, else enabled)
  1776.     DL = drive number (00h = A:)
  1777. Return: AX = status (0000h successful)
  1778. SeeAlso: AH=2Ch,AH=37h
  1779. --------c-1339-------------------------------
  1780. INT 13 U - QUICKCACHE II v4.20 - SET READ BUFFER SIZE FOR SPECIFIC DRIVE
  1781.     AH = 39h
  1782.     AL = new size of read buffer
  1783.     DL = drive number (00h = A:)
  1784. Return: AX = status (0000h successful)
  1785. Program: QUICKCACHE II is a shareware disk cache by P.R. Glassel and
  1786.       Associates, Inc.
  1787. SeeAlso: AH=2Ah,AH=3Ah
  1788. --------c-133A-------------------------------
  1789. INT 13 U - QUICKCACHE II v4.20 - SET WRITE BUFFER SIZE FOR SPECIFIC DRIVE
  1790.     AH = 3Ah
  1791.     AL = new size of write buffer
  1792.     DL = drive number (00h = A:)
  1793. Return: AX = status (0000h successful)
  1794. SeeAlso: AH=2Ah,AH=39h
  1795. --------c-133B-------------------------------
  1796. INT 13 U - QUICKCACHE II v4.20 - ENABLE/DISABLE ???
  1797.     AH = 3Bh
  1798.     AL = new state of ??? (01h enabled, else disabled)
  1799. Return: AX = status (0000h successful)
  1800. Note:    is affected by the flag reported at offset 05h of the system info
  1801.       returned by AH=30h, and sets the flag at offset 06h
  1802. SeeAlso: AH=3Ch
  1803. --------c-133C-------------------------------
  1804. INT 13 U - QUICKCACHE II v4.20 - ENABLE/DISABLE ???
  1805.     AH = 3Ch
  1806.     AL = new state of ??? (01h enabled, else disabled)
  1807. Return: AX = status (0000h successful)
  1808. Note:    is affected by the flag reported at offset 05h of the system info
  1809.       returned by AH=30h, and sets the flag at offset 07h
  1810. SeeAlso: AH=3Bh
  1811. --------c-133D-------------------------------
  1812. INT 13 U - QUICKCACHE II v4.20 - ENABLE/DISABLE CYLINDER FLUSH FOR DRIVE
  1813.     AH = 3Dh
  1814.     AL = new state (01h enabled, else disabled)
  1815.     DL = drive number (00h = A:)
  1816. Return: AX = status (0000h successful)
  1817. --------c-133E-------------------------------
  1818. INT 13 U - QUICKCACHE II v4.20 - SET SINGLE-SECTOR BONUS
  1819.     AH = 3Eh
  1820.     AL = new value for bonus
  1821. Return: AX = status (0000h successful)
  1822. Desc:    specify the bonus score to give to single-sector transfers in order to
  1823.       keep those sectors in the cache longer
  1824. --------c-133F-------------------------------
  1825. INT 13 U - QUICKCACHE II v4.20 - SET BONUS THRESHOLD
  1826.     AH = 3Fh
  1827.     AL = new value for bonus threshold
  1828. Return: AX = status (0000h successful)
  1829. --------c-1340-------------------------------
  1830. INT 13 U - QUICKCACHE II v4.20 - SET "sticky_max"
  1831.     AH = 40h
  1832.     AL = new value for "sticky_max"
  1833. Return: AX = status (0000h successful)
  1834. SeeAlso: AH=41h"QUICKCACHE"
  1835. --------d-1341--BX55AA-----------------------
  1836. INT 13 - IBM/MS INT 13 Extensions - INSTALLATION CHECK
  1837.     AH = 41h
  1838.     BX = 55AAh
  1839.     DL = drive (80h-FFh)
  1840. Return: CF set on error (not supported)
  1841.         AH = 01h (invalid function)
  1842.     CF clear if successful
  1843.         BX = AA55h if installed
  1844.         AH = major version of extensions
  1845.         (01h = 1.x, 20h = 2.0/EDD-1.0, 21h = 2.1/EDD-1.1)
  1846.         AL = internal use
  1847.         CX = API subset support bitmap (see #0196)
  1848.         DH = extension version (v2.0+ ??? -- not present in 1.x)
  1849. Note:    the Phoenix Enhanced Disk Drive Specification v1.0 uses version 2.0 of
  1850.       the INT 13 Extensions API
  1851. SeeAlso: AH=42h"INT 13 Ext",AH=48h"INT 13 Ext"
  1852.  
  1853. Bitfields for IBM/MS INT 13 Extensions API support bitmap:
  1854. Bit(s)    Description    (Table 0196)
  1855.  0    extended disk access functions (AH=42h-44h,47h,48h) supported
  1856.  1    removable drive controller functions (AH=45h,46h,48h,49h,INT 15/AH=52h)
  1857.       supported
  1858.  2    enhanced disk drive (EDD) functions (AH=48h,AH=4Eh) supported
  1859.     extended drive parameter table is valid (see #0198,#0201)
  1860.  3-15    reserved (0)
  1861. --------c-1341-------------------------------
  1862. INT 13 U - QUICKCACHE II v4.20 - SAVE/RESTORE ???
  1863.     AH = 41h
  1864.     AL = direction
  1865.         01h save to file
  1866.         else restore from file
  1867.     ES:DI -> 1024-byte buffer for ???
  1868. Return: AX = status (0000h successful, 8000h failed)
  1869. Program: QUICKCACHE II is a shareware disk cache by P.R. Glassel and
  1870.       Associates, Inc.
  1871. SeeAlso: AH=40h"QUICKCACHE"
  1872. --------d-1342-------------------------------
  1873. INT 13 - IBM/MS INT 13 Extensions - EXTENDED READ
  1874.     AH = 42h
  1875.     DL = drive number
  1876.     DS:SI -> disk address packet (see #0197)
  1877. Return: CF clear if successful
  1878.         AH = 00h
  1879.     CF set on error
  1880.         AH = error code (see #0159)
  1881.         disk address packet's block count field set to number of blocks
  1882.           successfully transferred
  1883. SeeAlso: AH=02h,AH=41h"INT 13 Ext",AH=43h"INT 13 Ext"
  1884.  
  1885. Format of disk address packet:
  1886. Offset    Size    Description    (Table 0197)
  1887.  00h    BYTE    10h (size of packet)
  1888.  01h    BYTE    reserved (0)
  1889.  02h    WORD    number of blocks to transfer (max 007Fh for Phoenix EDD)
  1890.  04h    DWORD    -> transfer buffer
  1891.  08h    QWORD    starting absolute block number
  1892.         (for non-LBA devices, compute as
  1893.           (Cylinder*NumHeads + SelectedHead) * SectorPerTrack +
  1894.           SelectedSector - 1
  1895. --------N-134257DX1234-----------------------
  1896. INT 13 U - Beame&Whiteside BWLPD - INSTALLATION CHECK
  1897.     AX = 4257h ("BW")
  1898.     DX = 1234h
  1899. Return: BX = 414Ch if installed
  1900. Program: BWLPD is the printer daemon from the BW-NFS package
  1901. SeeAlso: INT 62/AH=00h"ETHDEV"
  1902. --------d-1343-------------------------------
  1903. INT 13 - IBM/MS INT 13 Extensions - EXTENDED WRITE
  1904.     AH = 43h
  1905.     AL = write flags
  1906.        ---v1.0,2.0---
  1907.        bit 0: verify write
  1908.        bits 7-1 reserved (0)
  1909.        ---v2.1---
  1910.        00h,01h write without verify
  1911.        02h write with verify
  1912.     DL = drive number
  1913.     DS:SI -> disk address packet (see #0197)
  1914. Return: CF clear if successful
  1915.         AH = 00h
  1916.     CF set on error
  1917.         AH = error code (see #0159)
  1918.         disk address packet's block count field set to number of blocks
  1919.           successfully transferred
  1920. Note:    the BIOS returns CF set/AH=01h (invalid function) if verify is
  1921.       requested but not supported
  1922. SeeAlso: AH=03h,AH=41h"INT 13 Ext",AH=42h"INT 13 Ext",AH=44h
  1923. --------d-1344-------------------------------
  1924. INT 13 - IBM/MS INT 13 Extensions - VERIFY SECTORS
  1925.     AH = 44h
  1926.     DL = drive number
  1927.     DS:SI -> disk address packet (see #0197)
  1928. Return: CF clear if successful
  1929.         AH = 00h
  1930.     CF set on error
  1931.         AH = error code (see #0159)
  1932.         disk address packet's block count field set to number of blocks
  1933.           successfully verified
  1934. SeeAlso: AH=04h,AH=41h"INT 13 Ext",AH=42h"INT 13 Ext",AH=47h
  1935. --------d-1345-------------------------------
  1936. INT 13 - IBM/MS INT 13 Extensions - LOCK/UNLOCK DRIVE
  1937.     AH = 45h
  1938.     AL = operation
  1939.         00h lock media in drive
  1940.         01h unlock media
  1941.         02h check lock status
  1942.     DL = drive number
  1943. Return: CF clear if successful
  1944.         AH = 00h
  1945.         AL = lock state (00h = unlocked)
  1946.     CF set on error
  1947.         AH = error code (see #0159)
  1948. Notes:    this function is required to be supported for any removable drives
  1949.       numbered 80h or higher
  1950.     up to 255 locks may be placed on a drive, and the media will not
  1951.       be physically unlocked until all locks have been removed
  1952. SeeAlso: AH=41h"INT 13 Ext",AH=46h,AH=49h,INT 15/AH=52h"INT 13 Extensions"
  1953. --------d-1346-------------------------------
  1954. INT 13 - IBM/MS INT 13 Extensions - EJECT MEDIA
  1955.     AH = 46h
  1956.     AL = 00h (reserved)
  1957.     DL = drive number
  1958. Return: CF clear if successful
  1959.         AH = 00h
  1960.     CF set on error
  1961.         AH = error code (see #0159)
  1962. SeeAlso: AH=49h,INT 15/AH=52h"INT 13 Extensions"
  1963. --------d-1347-------------------------------
  1964. INT 13 - IBM/MS INT 13 Extensions - EXTENDED SEEK
  1965.     AH = 47h
  1966.     DL = drive number
  1967.     DS:SI -> disk address packet (see #0197)
  1968. Return: CF clear if successful
  1969.         AH = 00h
  1970.     CF set on error
  1971.         AH = error code (see #0159)
  1972. SeeAlso: AH=0Ch,AH=42h"INT 13 Ext"
  1973. --------d-1348-------------------------------
  1974. INT 13 - IBM/MS INT 13 Extensions - GET DRIVE PARAMETERS
  1975.     AH = 48h
  1976.     DL = drive (80h-FFh)
  1977.     DS:SI -> buffer for drive parameters (see #0198)
  1978. Return: CF clear if successful
  1979.         AH = 00h
  1980.         DS:SI buffer filled
  1981.     CF set on error
  1982.         AH = error code (see #0159)
  1983. SeeAlso: AH=08h,AH=41h,AH=49h
  1984.  
  1985. Format of IBM/MS INT 13 Extensions drive parameters:
  1986. Offset    Size    Description    (Table 0198)
  1987.  00h    WORD    (call) size of buffer (001Ah for v1.x, 001Eh for v2.x)
  1988.         (ret) size of returned data
  1989.  02h    WORD    information flags (see #0199)
  1990.  04h    DWORD    number of physical cylinders on drive
  1991.  08h    DWORD    number of physical heads on drive
  1992.  0Ch    DWORD    number of physical sectors per track
  1993.  10h    QWORD    total number of sectors on drive
  1994.  18h    WORD    bytes per sector
  1995. ---v2.0+ ---
  1996.  1Ah    DWORD    -> EDD configuration parameters (see #0201)
  1997.         FFFFh:FFFFh if not available
  1998. Note:    if the size is less than 30 on call, the final DWORD will not be
  1999.       returned by a v2.x implementation
  2000. SeeAlso: #0200,#2828
  2001.  
  2002. Bitfields for IBM/MS INT 13 Extensions information flags:
  2003. Bit(s)    Description    (Table 0199)
  2004.  0    DMA boundary errors handled transparently
  2005.  1    cylinder/head/sectors-per-track information is valid
  2006.  2    removable drive
  2007.  3    write with verify supported
  2008.  4    drive has change-line support (required if drive >= 80h is removable)
  2009.  5    drive can be locked (required if drive >= 80h is removable)
  2010.  6    CHS information set to maximum supported values, not current media
  2011.  15-7    reserved (0)
  2012. SeeAlso: #0198
  2013.  
  2014. Format of Phoenix Enhanced Disk Drive Spec translated drive parameter table:
  2015. Offset    Size    Description    (Table 0200)
  2016.  00h    WORD    number of cylinders
  2017.  02h    BYTE    number of heads
  2018.  03h    BYTE    A0h (signature indicating translated table)
  2019.  04h    BYTE    number of physical sectors per track
  2020.  05h    WORD    starting write precompensation cylinder number
  2021.  07h    BYTE    reserved
  2022.  08h    BYTE    control byte (see #2830 at INT 41"DISK 0")
  2023.  09h    WORD    number of physical cylinders
  2024.  0Bh    BYTE    number of physical heads
  2025.  0Ch    WORD    cylinder number of landing zone
  2026.  0Eh    BYTE    number of logical sectors per track
  2027.  0Fh    BYTE    checksum
  2028. Program: the Phoenix Enhanced Disk Drive Specification is an addition to the
  2029.       IBM/MS INT 13 extensions
  2030. SeeAlso: #0201,#2828
  2031.  
  2032. Format of Phoenix Enhanced Disk Drive Spec Fixed Disk Parameter Table:
  2033. Offset    Size    Description    (Table 0201)
  2034.  00h    WORD    physical I/O port base address
  2035.  02h    WORD    disk-drive control port address
  2036.  04h    BYTE    drive flags (see #0202)
  2037.  05h    BYTE    proprietary information
  2038.         bits 7-4 reserved (0)
  2039.         bits 3-0: Phoenix proprietary (used by BIOS)
  2040.  06h    BYTE    IRQ (bits 3-0; bits 7-4 reserved and must be 0)
  2041.  07h    BYTE    sector count for multi-sector transfers
  2042.  08h    BYTE    DMA control
  2043.         bits 7-4: DMA type (0-2) as per ATA-2 specification
  2044.         bits 3-0: DMA channel
  2045.  09h    BYTE    programmed I/O control
  2046.         bits 7-4: reserved (0)
  2047.         bits 3-0: PIO type (1-4) as per ATA-2 specification
  2048.  0Ah    WORD    drive options (see #0203)
  2049.  0Ch  2 BYTEs    reserved (0)
  2050.  0Eh    BYTE    extension revision level (high nybble=major, low nybble=minor)
  2051.         (currently 10h for v1.0 and 11h for v1.1)
  2052.  0Fh    BYTE    2's complement checksum of bytes 00h-0Eh
  2053.         8-bit sum of all bytes 00h-0Fh should equal 00h
  2054. SeeAlso: #0200
  2055.  
  2056. Bitfields for Phoenix Enhanced Disk Drive Spec drive flags:
  2057. Bit(s)    Description    (Table 0202)
  2058.  7    reserved (1)
  2059.  6    LBA enabled
  2060.  5    reserved (1)
  2061.  4    drive is slave
  2062.  3-0    reserved (0)
  2063. SeeAlso: #0201,#0203
  2064.  
  2065. Bitfields for Phoenix Enhanced Disk Drive Spec drive options:
  2066. Bit(s)    Description    (Table 0203)
  2067.  0    fast PIO enabled
  2068.  1    fast DMA access enabled
  2069.  2    block PIO (multi-sector transfers) enabled
  2070.  3    CHS translation enabled
  2071.  4    LBA translation enabled
  2072.  5    removable media
  2073.  6    ATAPI device (CD-ROM)
  2074.  7    32-bit transfer mode
  2075. ---v1.1---
  2076.  8    ATAPI device uses DRQ to signal readiness for packet command
  2077.     (must be 0 if bit 6 is 0)
  2078.  10-9    translation type (must be 00 if bit 3 is 0)
  2079.     00 Phoenix bit-shifting translation
  2080.     01 LBA-assisted translation
  2081.     10 reserved
  2082.     11 proprietary translation
  2083.  15-8    reserved
  2084. SeeAlso: #0201,#0202
  2085. --------d-1349-------------------------------
  2086. INT 13 - IBM/MS INT 13 Extensions - EXTENDED MEDIA CHANGE
  2087.     AH = 49h
  2088.     DL = drive number
  2089. Return: CF clear if media has not changed
  2090.         AH = 00h
  2091.     CF set if media may have changed
  2092.         AH = 06h (see #0159)
  2093. Note:    unlike AH=16h, any drive number may be specified
  2094. SeeAlso: AH=16h,AH=41h"INT 13 Ext",AH=46h
  2095. --------d-134A-------------------------------
  2096. INT 13 - Bootable CD-ROM - INITIATE DISK EMULATION
  2097.     AH = 4Ah
  2098.     AL = 00h
  2099.     DS:SI -> specification packet (see #0204)
  2100. Return: CF clear if successful
  2101.     CF set on error (drive will not be in emulation mode)
  2102.     AX = return codes
  2103. SeeAlso: AH=48h,AX=4B00h,AH=4Ch,AH=4Dh
  2104.  
  2105. Format of Bootable CD-ROM Specification Packet:
  2106. Offset    Size    Description    (Table 0204)
  2107.  00h    BYTE    size of packet in bytes (13h)
  2108.  01h    BYTE    boot media type (see #0205)
  2109.  02h    BYTE    drive number
  2110.         00h floppy image
  2111.         80h bootable hard disk
  2112.         81h-FFh nonbootable or no emulation
  2113.  03h    BYTE    CD-ROM controller number
  2114.  04h    DWORD    Logical Block Address of disk image to emulate
  2115.  08h    WORD    device specification (see also #0205)
  2116.         (IDE) bit 0: drive is slave instead of master
  2117.         (SCSI)    bits 7-0: LUN and PUN
  2118.             bits 15-8: bus number
  2119.  0Ah    WORD    segment of 3K buffer for caching CD-ROM reads
  2120.  0Ch    WORD    load segment for initial boot image
  2121.         if 0000h, load at segment 07C0h
  2122.  0Eh    WORD    number of 512-byte virtual sectors to load
  2123.         (only valid for AH=4Ch)
  2124.  10h    BYTE    low byte of cylinder count (for INT 13/AH=08h)
  2125.  11h    BYTE    sector count, high bits of cylinder count (for INT 13/AH=08h)
  2126.  12h    BYTE    head count (for INT 13/AH=08h)
  2127. SeeAlso: #0206,AH=08h
  2128.  
  2129. Bitfields for Bootable CD-ROM boot media type:
  2130. Bit(s)    Description    (Table 0205)
  2131.  3-0    media type
  2132.     0000 no emulation
  2133.     0001 1.2M diskette
  2134.     0010 1.44M diskette
  2135.     0011 2.88M diskette
  2136.     0100 hard disk (drive C:)
  2137.     other reserved
  2138.  5-4    reserved (0)
  2139.  6    image contains ATAPI driver
  2140.  7    image contains SCSI driver(s)
  2141. SeeAlso: #0204
  2142. --------d-134B00-----------------------------
  2143. INT 13 - Bootable CD-ROM - TERMINATE DISK EMULATION
  2144.     AX = 4B00h
  2145.     DL = drive number or 7Fh to terminate all emulations
  2146.     DS:SI -> empty specification packet (see #0204)
  2147. Return: CF clear if successful
  2148.     CF set on error (drive will still be in emulation mode)
  2149.     AX = return codes
  2150.     DS:SI specification packet filled
  2151. SeeAlso: AH=48h,AH=4Ah,AX=4B00h,AH=4Ch,AH=4Dh
  2152. --------d-134B01-----------------------------
  2153. INT 13 - Bootable CD-ROM - GET STATUS
  2154.     AX = 4B01h
  2155.     DL = drive number
  2156.     DS:SI -> empty specification packet (see #0204)
  2157. Return: CF clear if successful
  2158.     CF set on error
  2159.     AX = return codes
  2160.     DS:SI specification packet filled
  2161. Note:    same as AX=4B00h, but does not terminate emulation
  2162. SeeAlso: AH=48h,AH=4Ah,AX=4B00h,AH=4Ch,AH=4Dh
  2163. --------d-134C-------------------------------
  2164. INT 13 - Bootable CD-ROM - INITIATE DISK EMULATION AND BOOT
  2165.     AH = 4Ch
  2166.     AL = 00h
  2167.     DS:SI -> specification packet (see #0204)
  2168. Return: never, if successful
  2169.     CF set (error while attempting to boot)
  2170.     AX = error codes
  2171. SeeAlso: AH=48h,AH=4Ah,AX=4B00h,AH=4Dh
  2172. --------d-134D00-----------------------------
  2173. INT 13 - Bootable CD-ROM - RETURN BOOT CATALOG
  2174.     AX = 4D00h
  2175.     DS:SI -> command packet (see #0206)
  2176. Return: CF clear if successful
  2177.     CF set on error
  2178.     AX = return codes
  2179. SeeAlso: AH=48h,AH=4Ah,AX=4B00h,AH=4Ch
  2180.  
  2181. Format of Bootable CD-ROM "get boot catalog" command packet:
  2182. Offset    Size    Description    (Table 0206)
  2183.  00h    BYTE    size of packet in bytes (08h)
  2184.  01h    BYTE    number of sectors of boot catalog to read
  2185.  02h    DWORD    -> buffer for boot catalog
  2186.  06h    WORD    first sector in boot catalog to transfer
  2187. SeeAlso: #0204
  2188. --------d-134E-------------------------------
  2189. INT 13 - IBM/MS INT 13 Extensions v2.1 - SET HARDWARE CONFIGURATION
  2190.     AH = 4Eh
  2191.     AL = function
  2192.         00h enable prefetch
  2193.         01h disable prefetch
  2194.         02h set maximum PIO transfer mode
  2195.         03h set PIO mode 0
  2196.         04h set default PIO transfer mode
  2197.         05h enable INT 13 DMA maximum mode
  2198.         06h disable INT 13 DMA
  2199.     DL = drive number
  2200. Return: CF clear if successful
  2201.         AH = 00h
  2202.         AL = status
  2203.         00h command was safe (only affected specified drive)
  2204.         01h other devices are affected
  2205.     CF set on error
  2206.         AH = error code (see #0159)
  2207. Note:    DMA and PIO modes are mutually exclusive, so selecting DMA disables
  2208.       PIO (for either the specified device or all devices on that
  2209.       controller), and selecting PIO disables DMA
  2210. SeeAlso: AH=41h"INT 13 Extensions"
  2211. --------v-135001------------------------
  2212. INT 13 - VIRUS - "Andropinis" - INSTALLATION CHECK
  2213.     AX = 5001h
  2214. Return: AX = 0150h if resident
  2215. SeeAlso: AX=FD50h"VIRUS",INT 21/AX=0B56h
  2216. --------v-135342CX0001-----------------------
  2217. INT 13 - ScanBoot - INSTALLATION CHECK
  2218.     AX = 5342h ("SB")
  2219.     CX = 0001h
  2220.     DX = 0000h
  2221. Return: CF clear if ScanBoot installed
  2222.        AX = 0000h
  2223.        CX = serial number ("SW" if shareware release)
  2224.        DX = version
  2225.        BX,SI,ES destroyed
  2226. Program: ScanBoot is a virus-detection TSR by PanSoft
  2227. --------d-135501-----------------------------
  2228. INT 13 - Seagate ST01/ST02 - Inquiry
  2229.     AX = 5501h
  2230.     DH = number of bytes to transfer
  2231.     DL = drive ID (80h, 81h, ...)
  2232.     ES:BX -> buffer for results
  2233. Return: ES:BX buffer filled with the Inquiry results
  2234. Notes:    the ST01/ST02 BIOS does not return any success/failure indication,
  2235.       so all commands must be assumed to have been successful
  2236.     the ST01/ST02 BIOS always maps its drives after the previous BIOS
  2237.       drives without changing the BIOS drive count at 0040h:0075h
  2238.     this command is identical to the SCSI Inquiry command
  2239. --------d-135502-----------------------------
  2240. INT 13 - Seagate ST01/ST02 - RESERVED
  2241.     AX = 5502h
  2242. --------d-135503-----------------------------
  2243. INT 13 - Seagate ST01/ST01 - Set Device Type Qualifier (DTQ)
  2244.     AX = 5503h
  2245.     DH = DTQ byte (see #0207)
  2246.     DL = drive ID (80h, 81h, ...)
  2247. Return: nothing
  2248.  
  2249. Bitfields for DTQ byte:
  2250. Bit(s)    Description    (Table 0207)
  2251.  7    reserved
  2252.  6    SCSI drive attached
  2253.  5    reserved
  2254.  4    selected drive is ST225N/NP (Paired)
  2255.  3    selected drive is ST225N
  2256.  2    Host Adapter checks parity on the selected drive
  2257.  1    selected drive has been installed
  2258.  0    Seagate installation software present
  2259. --------d-135504-----------------------------
  2260. INT 13 U - Seagate - ??? - RETURN IDENTIFICATION
  2261.     AX = 5504h
  2262.     DX = drive (bit 7 set for hard disk)
  2263. Return: CF clear if successful
  2264.         AX = 4321h if ST01/ST02h
  2265.         AX = 4322h if ??? Seagate controller
  2266.     CF set on error
  2267. SeeAlso: AX=5505h,AX=5514h
  2268. --------d-135504-----------------------------
  2269. INT 13 - Seagate ST01/ST02 - RETURN IDENTIFICATION
  2270.     AX = 5504h
  2271.     DL = drive ID (80h, 81h, ...)
  2272. Return: AX = 4321h
  2273.     BL = selected drive number (00h, 01h)
  2274.     BH = number of drives attached to Host Adapter (max. 2)
  2275. --------d-135505-----------------------------
  2276. INT 13 - Seagate - ??? - PARK HEADS
  2277.     AX = 5505h
  2278.     DX = drive (bit 7 set for hard disk)
  2279. Return: CF clear if successful
  2280.     CF set on error
  2281. SeeAlso: AX=5504h,AX=5515h
  2282. --------d-135505-----------------------------
  2283. INT 13 - Seagate ST01/ST02 - PARK HEADS
  2284.     AX = 5505h
  2285.     DL = drive ID (80h, 81h, ...)
  2286.     DH = subfunction
  2287.         00h park heads (SCSI Stop command)
  2288.         01h un-park heads (SCSI Start command)
  2289. Return: nothing
  2290. --------d-135506-----------------------------
  2291. INT 13 - Seagate ST01/ST02 - SCSI Bus Parity
  2292.     AX = 5506h
  2293.     DL = drive ID (80h, 81h, ...)
  2294.     DH = subfunction
  2295.         00h disable parity check
  2296.         01h enable parity check
  2297.         02h return current parity setting
  2298. Return: AL = status
  2299.         00h parity checking disabled
  2300.         01h parity checking enabled
  2301. --------d-135507-----------------------------
  2302. INT 13 - Seagate ST01/ST02 - RESERVED FUNCTIONS
  2303.     AX = 5507h to 550Dh
  2304. Note:    officially listed as "reserved"
  2305. --------d-135514-----------------------------
  2306. INT 13 U - Seagate - ???
  2307.     AX = 5514h
  2308.     DX = drive (bit 7 set for hard disk)
  2309. Return: CF clear if successful
  2310.     CF set on error
  2311.     AX = return value (FEBEh,FEBFh,FEDAh,FEDBh)
  2312. SeeAlso: AX=5504h,AX=5515h
  2313. --------d-135515-----------------------------
  2314. INT 13 U - Seagate - PARK HEADS???
  2315.     AX = 5515h
  2316.     DX = drive (bit 7 set for hard disk)
  2317. Return: CF clear if successful
  2318.     CF set on error
  2319. Note:    appears to be identical to AX=5505h
  2320. SeeAlso: AX=5504h,AX=5505h
  2321. --------d-1359-------------------------------
  2322. INT 13 - SyQuest - Generic SCSI pass through
  2323.     AH = 59h
  2324.     CX = HOST_ID, 0-based
  2325.     DX = 80h
  2326.     ES:BX pointer to SCSI structure (see #0208)
  2327. Return: CF clear
  2328.     AH = 95h
  2329. SeeAlso: AH=12h"SyQuest",AH=13h"SyQuest",AH=1Fh"SyQuest"
  2330.  
  2331. Format of SyQuest SCSI structure:
  2332. Offset    Size    Description    (Table 0208)
  2333.  00h    WORD    opcode (see #0209)
  2334.  02h    BYTE    target's SCSI ID
  2335.  03h    BYTE    target's logical unit number
  2336.  04h    BYTE    data direction (00h no data xfer, 01h data in, FFh data out)
  2337.  05h    BYTE    host status
  2338.         00h successful
  2339.         01h selection time out
  2340.         02h data over-run or under-run
  2341.  06h    BYTE    target status at command completion
  2342.         00h successful
  2343.         02h check status
  2344.         08h busy
  2345.  07h    BYTE    command data block length
  2346.  08h    DWORD    request data length
  2347.  0Ch    DWORD    result data length (actual length of data transferred)
  2348.  10h    DWORD    -> CDB (see #2868,#2869,#2870)
  2349.  14h    DWORD    -> data buffer
  2350. Note:    The handler does not perform a 'Request Sense' command if there was an
  2351.       error
  2352.  
  2353. (Table 0209)
  2354. Values for SCSI opcode:
  2355.  00h    verify interface
  2356.     clears carry flag and returns if function is available
  2357.  01h    returns the ID of the INT 13h Handler in a NULL terminated string of
  2358.     length less than 40 byte including the terminator.
  2359.     The string is stored in the buffer pointed by p_buf.
  2360.  02h    device mapping info. The caller provides a one byte buffer.
  2361.     The handler stores the Int 13h Device ID (80h or above) in the buffer.
  2362.     It stores 0 if that target does not exists.
  2363.  03h    execute SCSI command
  2364.  04h    device reset
  2365.  05h    SCSI bus reset
  2366. SeeAlso: #0208
  2367. --------d-1370-------------------------------
  2368. INT 13 - Priam EDVR.SYS DISK PARTITIONING SOFTWARE???
  2369.     AH = 70h
  2370.     ???
  2371. Return: ???
  2372. Note:    Priam's EDISK.EXE (FDISK replacement) and EFMT.EXE (low-level
  2373.       formatting program) make this call, presumably to EDVR.SYS (the
  2374.       partitioning driver)
  2375. SeeAlso: AH=ADh
  2376. ----------1375-------------------------------
  2377. INT 13 - ???
  2378.     AH = 75h
  2379.     ???
  2380. Return: AH = ???
  2381.     ???
  2382. Note:    intercepted by PC-Cache (v5.1 only)
  2383. ----------1376-------------------------------
  2384. INT 13 - ???
  2385.     AH = 76h
  2386.     ???
  2387. Return: AH = ???
  2388.     ???
  2389. Note:    intercepted by PC-Cache (v5.1 only)
  2390. --------c-137B00-----------------------------
  2391. INT 13 - NOW! v3.05 - GET INFORMATION
  2392.     AX = 7B00h
  2393.     CX:DX -> 1F8h-byte buffer for information record (see #0210)
  2394. Return: AX = 0000h
  2395.     BX = segment of main resident code
  2396.     ES = ???
  2397. Program: NOW! is a disk cache by Vertisoft Systems, Inc.
  2398. SeeAlso: AX=7B02h,AH=EFh
  2399.  
  2400. Format of NOW! information record:
  2401. Offset    Size    Description    (Table 0210)
  2402.  00h 80 BYTEs    name of directory from which NOW! was started
  2403.  50h 424 BYTEs    ???
  2404.  81h  ? BYTEs    array of bytes for ???
  2405.  F7h 250 BYTEs    array of 25 entries, one per drive???
  2406.     Offset    Size    Description
  2407.      00h  2 BYTEs    ???
  2408.      02h    WORD    ???
  2409.      04h    WORD    ???
  2410.      06h  4 BYTEs    ???
  2411. 1F1h  7 BYTEs    ???
  2412. --------c-137B01-----------------------------
  2413. INT 13 - NOW! v3.05 - ???
  2414.     AX = 7B01h
  2415. Return: DX = segment of ???
  2416. SeeAlso: AX=7B00h
  2417. --------c-137B02-----------------------------
  2418. INT 13 - NOW! v3.05 - SET INFORMATION
  2419.     AX = 7B02h
  2420.     BX = segment of ??? (10h above a PSP)
  2421.     CX:DX -> 1F8h-byte information record (see #0210)
  2422. Return: ???
  2423. Program: NOW! is a disk cache by Vertisoft Systems, Inc.
  2424. Note:    NOW! grabs the INT 24h value from the PSP reached via the segment in
  2425.       BX
  2426. SeeAlso: AX=7B00h
  2427. --------c-137B03-----------------------------
  2428. INT 13 - NOW! v3.05 - ???
  2429.     AX = 7B03h
  2430.     ???
  2431. Return: ???
  2432. SeeAlso: AX=7B00h,AX=7B04h
  2433. --------c-137B04-----------------------------
  2434. INT 13 - NOW! v3.05 - ???
  2435.     AX = 7B04h
  2436.     ???
  2437. Return: ???
  2438. SeeAlso: AX=7B03h
  2439. --------c-137B05-----------------------------
  2440. INT 13 - NOW! v3.05 - GET DISK ACCESSES???
  2441.     AX = 7B05h
  2442. Return: BX:AX = number of physical accesses???
  2443.     DX:CX = total disk accesses???
  2444. SeeAlso: AX=7B00h,AX=7B06h
  2445. --------c-137B06-----------------------------
  2446. INT 13 - NOW! v3.05 - GET ???
  2447.     AX = 7B06h
  2448.     BX = ???
  2449. Return: AX = 0000h
  2450.     BX = ???
  2451. SeeAlso: AX=7B05h,AX=7B07h
  2452. --------c-137B07-----------------------------
  2453. INT 13 - NOW! v3.05 - GET ???
  2454.     AX = 7B07h
  2455. Return: AX = ???
  2456.     BX = ???
  2457.     CX = ???
  2458.     DX = ???
  2459. SeeAlso: AX=7B06h
  2460. --------c-137B08-----------------------------
  2461. INT 13 - NOW! v3.05 - ???
  2462.     AX = 7B08h
  2463.     CX = ??? (default 00h)
  2464. Return: ???
  2465. SeeAlso: AX=7B00h
  2466. --------c-1380--CX6572-----------------------
  2467. INT 13 - FAST! v4.02+ - API
  2468.     AH = 80h
  2469.     CX = 6572h
  2470.     DX = 1970h
  2471.     ES:BX -> request packet (see #0212)
  2472.     AL = function number (see #0211)
  2473. Return: AH = status (except function 06h)
  2474.         00h if successful
  2475.         01h invalid function
  2476.         05h not supported by the installed variant
  2477.     CF clear if successful
  2478.     CF set on error
  2479.     AL may be destroyed
  2480. Program: FAST! is a disk cache by Future Computing Systems and marketed by
  2481.       BLOC Publishing Corp.
  2482. SeeAlso: AX=8001h,AX=8006h,AX=8007h
  2483. Index:    hotkeys;FAST!
  2484.  
  2485. (Table 0211)
  2486. Values for FAST! function:
  2487.  01h    get cache information (see AX=8001h)
  2488.  04h    disable cache
  2489.  05h    enable cache and reset statistics
  2490.  06h    installation check (see AX=8006h)
  2491.  07h    unhook interrupts (see AX=8007h)
  2492.  09h    flush cache
  2493.  0Ah    (v4.02+) enable staged writes
  2494.  0Bh    (v4.02+) disable staged writes
  2495.  0Ch    (v4.02+) enable beep on flush
  2496.  0Dh    (v4.02+) disable beep on flush
  2497.  0Eh    ???
  2498.  0Fh    ???
  2499.  10h    (v4.12+) enable hotkeys
  2500.  11h    (v4.12+) disable hotkeys
  2501.  12h    (v4.13+) set idle delay
  2502.  13h    (v4.13+) set flush dirty percentage
  2503.  14h    (v5.00+) enable mouse checks
  2504.  15h    (v5.00+) disable mouse checks
  2505.  16h    (v5.00d+) reduce cache size to minimum
  2506.  17h    (v5.00d+) increase cache size to maximum
  2507.  
  2508. Format of FAST! request packet:
  2509. Offset    Size    Description    (Table 0212)
  2510.  00h    DWORD    pointer to 19-byte signature string (see #0213)
  2511.  04h    DWORD    pointer to buffer for data (if needed by function)
  2512.  
  2513. (Table 0213)
  2514. Values for FAST! v4.04-v5.03 signature string:
  2515.  13h 07h 06h 08h 11h 18h 0Fh 0Eh 02h 18h 13h 08h 0Bh 08h 01h 00h 04h 08h 15h
  2516. --------c-138001CX6572-----------------------
  2517. INT 13 - FAST! v4.02+ - GET CACHE INFORMATION
  2518.     AX = 8001h
  2519.     CX = 6572h
  2520.     DX = 1970h
  2521.     ES:BX -> request packet (see #0214)
  2522. Return: AH = 00h if successful
  2523. SeeAlso: AH=80h,AX=8006h
  2524.  
  2525. Format of FAST! request packet:
  2526. Offset    Size    Description    (Table 0214)
  2527.  00h    DWORD    -> 19-byte signature string (see #0213)
  2528.  04h    DWORD    -> buffer for cache information (see #0215)
  2529.  
  2530. Format of FAST! cache information (v5.00-5.03):
  2531. Offset    Size    Description    (Table 0215)
  2532.  00h    WORD    binary version number of FAST! (v5.00 = 01F4h)
  2533.  02h    BYTE    revision letter (61h = X.XXa, 62h = X.XXb, etc.)
  2534.  03h    BYTE    FAST! variant
  2535.         (01h = FASTE, 02h = FASTX BIOS, 04h = FASTC, 20h = FASTX XMS)
  2536.  04h    DWORD    total number of read requests
  2537.  08h    DWORD    number of physical disk reads
  2538.  0Ch    DWORD    grabbed hash buckets
  2539.  10h    DWORD    "st_386mem"
  2540.  14h    DWORD    total number of writes (only counted when staging enabled)
  2541.  18h    DWORD    number of physical disk writes (only when staging enabled)
  2542.  1Ch    DWORD    number of write errors while flushing cache
  2543.  20h    WORD    flags1 (see #0216)
  2544.  22h    WORD    flags
  2545.         bit 0: ???
  2546.         bit 1: staged writes enabled
  2547.  24h    WORD    ???
  2548.  26h    WORD    maximum cache size in KB
  2549.  28h    WORD    minimum cache size in KB
  2550.  2Ah    WORD    segment of first cache buffer (FASTC)
  2551.         segment of EMS page frame (FASTE)
  2552.         XMS handle (FASTX XMS)
  2553.  2Ch    WORD    number of hash buckets containing no entries
  2554.  2Eh    WORD    number of hash buckets containing one entry
  2555.  30h    WORD    number of hash buckets containing two entries
  2556.  32h    WORD    number of hash buckets containing three entries
  2557.  34h    WORD    number of hash buckets containing four entries
  2558.  36h    WORD    number of hash buckets containing five entries
  2559.  38h    WORD    maximum contiguous sectors
  2560.  3Ah    WORD    hash factor
  2561.  3Ch    WORD    number of paragraphs of memory used below 1M
  2562.  3Eh    WORD    entries per hash bucket
  2563.  40h    WORD    idle delay in seconds
  2564.  42h  2 BYTEs    ???
  2565.  44h    WORD    staged write threshold percentage
  2566.  46h  2 BYTEs    ???
  2567.  48h    WORD    number of dirty sectors
  2568.  4Ah    WORD    number of staged write buffers
  2569.  4Ch    WORD    current cache size in KB
  2570.  4Eh    WORD    beep frequency in Hz
  2571.  50h    WORD    ???
  2572.  52h    WORD    ???
  2573.  
  2574. Bitfields for FAST! flags1:
  2575. Bit(s)    Description    (Table 0216)
  2576.  0    beep on flush
  2577.  3    hotkeys enabled
  2578.  4    mouse idle check enabled
  2579.  8    caching enabled
  2580.  13    ???
  2581. --------c-138006CX6572-----------------------
  2582. INT 13 - FAST! v4.02+ - INSTALLATION CHECK
  2583.     AX = 8006h
  2584.     CX = 6572h
  2585.     DX = 1970h
  2586.     ES:BX -> request packet (see #0217)
  2587. Return: AX = 1965h if installed
  2588. SeeAlso: AH=80h,AX=8001h,AX=8007h
  2589.  
  2590. Format of FAST! request packet:
  2591. Offset    Size    Description    (Table 0217)
  2592.  00h    DWORD    -> 19-byte signature string (see #0213)
  2593. --------c-138007CX6572-----------------------
  2594. INT 13 - FAST! v4.02+ - UNHOOK INTERRUPTS
  2595.     AX = 8007h
  2596.     CX = 6572h
  2597.     DX = 1970h
  2598.     ES:BX -> request packet (see #0218)
  2599. Return: AX = 1965h if installed
  2600. SeeAlso: AH=80h,AX=8006h
  2601. Index:    uninstall;FAST!
  2602.  
  2603. Format of FAST! request packet:
  2604. Offset    Size    Description    (Table 0218)
  2605.  00h    DWORD    -> 19-byte signature string (see #0213)
  2606. --------c-1381--SI4358-----------------------
  2607. INT 13 - Super PC-Kwik v3.20+ - ???
  2608.     AH = 81h
  2609.     SI = 4358h
  2610.     ???
  2611. Return: ???
  2612. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  2613.       Super PC-Kwik, and thus support this call (PC-Cache v5.1 corresponds
  2614.       to PC-Kwik v3.20 and PC-Cache v5.5 to PC-Kwik v3.27)
  2615.     returns immediately in PC-Cache v5.x
  2616. Index:    PC-Cache|Qualitas Qcache
  2617. --------c-1382--SI4358-----------------------
  2618. INT 13 - Super PC-Kwik v3.20+ - ???
  2619.     AH = 82h
  2620.     SI = 4358h
  2621.     ???
  2622. Return: AL = ???
  2623. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  2624.       Super PC-Kwik, and thus support this call
  2625. SeeAlso: AH=84h
  2626. Index:    PC-Cache|Qualitas Qcache
  2627. --------c-1383--SI4358-----------------------
  2628. INT 13 - Super PC-Kwik v3.20+ - ???
  2629.     AH = 83h
  2630.     SI = 4358h
  2631.     AL = ???
  2632.     ES:BX -> ???
  2633.     ???
  2634. Return: ???
  2635. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  2636.       Super PC-Kwik, and thus support this call
  2637. SeeAlso: AH=85h
  2638. Index:    PC-Cache|Qualitas Qcache
  2639. --------c-1384--SI4358-----------------------
  2640. INT 13 - Super PC-Kwik v3.20+ - ???
  2641.     AH = 84h
  2642.     SI = 4358h
  2643.     AL = ???
  2644.     ???
  2645. Return: AL = ???
  2646. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  2647.       Super PC-Kwik, and thus support this call
  2648. SeeAlso: AH=82h
  2649. Index:    PC-Cache|Qualitas Qcache
  2650. --------c-1385--SI4358-----------------------
  2651. INT 13 - Super PC-Kwik v3.20+ - ???
  2652.     AH = 85h
  2653.     SI = 4358h
  2654.     AL = ???
  2655.     DL = ???
  2656.     ???
  2657. Return: ???
  2658. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  2659.       Super PC-Kwik, and thus support this call (PC-Cache v5.1 corresponds
  2660.       to PC-Kwik v3.20)
  2661. SeeAlso: AH=83h
  2662. Index:    PC-Cache|Qualitas Qcache
  2663. --------c-1386--SI4358-----------------------
  2664. INT 13 - Super PC-Kwik v4.00+ - ???
  2665.     AH = 86h
  2666.     SI = 4358h
  2667.     ???
  2668. Return: ???
  2669. Note:    Qualitas Qcache v4.00 is an OEM version of Super PC-Kwik v4.00, and
  2670.       thus supports this call
  2671. Index:    Qualitas Qcache
  2672. --------c-1387--SI4358-----------------------
  2673. INT 13 - Super PC-Kwik v4.00+ - ???
  2674.     AH = 87h
  2675.     SI = 4358h
  2676.     ???
  2677. Return: AH = status??? (00h)
  2678.     CX = ???
  2679.     DX = ??? (0000h)
  2680. Note:    Qualitas Qcache v4.00 is an OEM version of Super PC-Kwik v4.00, and
  2681.       thus supports this call
  2682. Index:    Qualitas Qcache
  2683. --------c-1388--SI4358-----------------------
  2684. INT 13 - Super PC-Kwik v4.00+ - ???
  2685.     AH = 88h
  2686.     SI = 4358h
  2687.     ???
  2688. Return: AH = status??? (00h)
  2689.     CX = ???
  2690.     DX = ??? (0000h)
  2691. Note:    Qualitas Qcache v4.00 is an OEM version of Super PC-Kwik v4.00, and
  2692.       thus supports this call
  2693. Index:    Qualitas Qcache
  2694. --------c-1389--SI4358-----------------------
  2695. INT 13 - Super PC-Kwik v5.10+ - ???
  2696.     AH = 89h
  2697.     SI = 4358h
  2698.     ???
  2699. Return: ???
  2700. --------c-138A--SI4358-----------------------
  2701. INT 13 - Super PC-Kwik v5.10+ - ???
  2702.     AH = 8Ah
  2703.     SI = 4358h
  2704.     ???
  2705. Return: ???
  2706. --------c-138EED-----------------------------
  2707. INT 13 - HyperDisk v4.01+ - ???
  2708.     AX = 8EEDh
  2709.     ???
  2710. Return: ???
  2711. Program: HyperDisk is a shareware disk cache by HyperWare (Roger Cross)
  2712. SeeAlso: AX=8EEEh,AX=8EEFh,AH=EEh,INT 2F/AX=DF00h
  2713. --------c-138EEE-----------------------------
  2714. INT 13 - HyperDisk v4.01+ - ???
  2715.     AX = 8EEEh
  2716. Return: CF set
  2717.     AX = CS of HyperDisk resident code
  2718.     ???
  2719. Note:    identical to AX=8EEFh in HYPERDKX v4.21-4.30
  2720. SeeAlso: AX=8EEDh,AX=8EEFh,AH=EEh
  2721. --------c-138EEF-----------------------------
  2722. INT 13 - HyperDisk v4.01+ - ???
  2723.     AX = 8EEFh
  2724. Return: CF set
  2725.     AX = CS of HyperDisk resident code
  2726.     ???
  2727. Note:    identical to AX=8EEEh in HYPERDKX v4.21-4.30
  2728. SeeAlso: AX=8EEDh,AX=8EEEh,AH=EEh
  2729. --------c-1392--SI4358-----------------------
  2730. INT 13 - Super PC-Kwik v5.10+ - ???
  2731.     AH = 92h
  2732.     SI = 4358h
  2733.     ???
  2734. Return: AH = status??? (00h)
  2735.     DL = ???
  2736. SeeAlso: AH=93h
  2737. --------c-1393--SI4358-----------------------
  2738. INT 13 - Super PC-Kwik v5.10+ - ???
  2739.     AH = 93h
  2740.     SI = 4358h
  2741.     ???
  2742. Return: AH = status??? (00h)
  2743.     AL = ???
  2744. SeeAlso: AH=92h
  2745. --------c-1394--SI4358-----------------------
  2746. INT 13 - Super PC-Kwik v5.10+ - ???
  2747.     AH = 94h
  2748.     SI = 4358h
  2749.     ???
  2750. Return: ???
  2751. --------c-1395--SI4358-----------------------
  2752. INT 13 - Super PC-Kwik v5.10+ - ???
  2753.     AH = 95h
  2754.     SI = 4358h
  2755.     ???
  2756. Return: AH = status??? (00h)
  2757.     DX = ???
  2758. --------c-1396--SI4358-----------------------
  2759. INT 13 - Super PC-Kwik v5.10+ - ???
  2760.     AH = 96h
  2761.     SI = 4358h
  2762.     AL = ??? (01h)
  2763.     BX = ??? (0790h)
  2764.     DL = ???
  2765. Return: AH = status??? (00h)
  2766.     DX = ???
  2767. --------c-1397--SI4358-----------------------
  2768. INT 13 - Super PC-Kwik v5.10+ - ???
  2769.     AH = 97h
  2770.     SI = 4358h
  2771.     ???
  2772. Return: ???
  2773. --------c-1398--SI4358-----------------------
  2774. INT 13 - Super PC-Kwik v5.10+ - ???
  2775.     AH = 98h
  2776.     SI = 4358h
  2777.     ???
  2778. Return: ???
  2779. --------c-1399--SI4358-----------------------
  2780. INT 13 - Super PC-Kwik v5.10+ - ???
  2781.     AH = 99h
  2782.     SI = 4358h
  2783.     ???
  2784. Return: ???
  2785. --------c-139A--SI4358-----------------------
  2786. INT 13 - Super PC-Kwik v5.10+ - ???
  2787.     AH = 9Ah
  2788.     SI = 4358h
  2789.     ???
  2790. Return: ???
  2791. --------c-139B--SI4358-----------------------
  2792. INT 13 - Super PC-Kwik v5.10+ - ???
  2793.     AH = 9Bh
  2794.     SI = 4358h
  2795.     ???
  2796. Return: ???
  2797. --------c-139C--SI4358-----------------------
  2798. INT 13 - Super PC-Kwik v5.10+ - ???
  2799.     AH = 9Ch
  2800.     SI = 4358h
  2801.     ???
  2802. Return: ???
  2803. Note:    functions 9Ch and 9Dh are the only ones which are fully reentrant; all
  2804.       other PC-Kwik API calls (INT 13/81h-B0h) return AX=0200h and CF clear
  2805.       if a previous call is still in progress
  2806. --------c-139D--SI4358-----------------------
  2807. INT 13 - Super PC-Kwik v5.10+ - ???
  2808.     AH = 9Dh
  2809.     SI = 4358h
  2810.     ???
  2811. Return: ???
  2812. --------c-13A0--SI4358-----------------------
  2813. INT 13 - Super PC-Kwik v3.20+ - GET RESIDENT CODE SEGMENT
  2814.     AH = A0h
  2815.     SI = 4358h
  2816. Return: AX = segment of resident code
  2817. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  2818.       Super PC-Kwik, and thus support this call (note that PC-Cache v5.5
  2819.       corresponds to PC-Kwik v3.27)
  2820. SeeAlso: INT 16/AX=FFA5h/CX=1111h
  2821. Index:    PC-Cache|Qualitas Qcache
  2822. --------c-13A1--SI4358-----------------------
  2823. INT 13 - Super PC-Kwik v3.20+ - FLUSH CACHE
  2824.     AH = A1h
  2825.     SI = 4358h
  2826. Return: CF clear
  2827.     AH = 00h (v5.10)
  2828. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  2829.       Super PC-Kwik, and thus support this call (note that PC-Cache v5.1
  2830.       corresponds to PC-Kwik v3.20)
  2831. SeeAlso: INT 16/AX=FFA5h/CX=FFFFh
  2832. Index:    PC-Cache|Qualitas Qcache
  2833. --------c-13A2--SI4358-----------------------
  2834. INT 13 - Super PC-Kwik v3.20+ - ???
  2835.     AH = A2h
  2836.     SI = 4358h
  2837.     ???
  2838. Return: ???
  2839. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  2840.       Super PC-Kwik, and thus support this call (note that PC-Cache v5.1
  2841.       corresponds to PC-Kwik v3.20)
  2842. Index:    PC-Cache|Qualitas Qcache
  2843. --------c-13A3--SI4358-----------------------
  2844. INT 13 U - Super PC-Kwik v5.10+ - DISABLE CACHE
  2845.     AH = A3h
  2846.     SI = 4358h
  2847. Return: CF clear
  2848. SeeAlso: AH=A4h
  2849. --------c-13A4--SI4358-----------------------
  2850. INT 13 U - Super PC-Kwik v5.10+ - ENABLE CACHE
  2851.     AH = A4h
  2852.     SI = 4358h
  2853. Return: CF clear
  2854. SeeAlso: AH=A3h
  2855. --------c-13A5--SI4358-----------------------
  2856. INT 13 CU - Super PC-Kwik v5.10+ - PROGRAM TERMINATION NOTIFICATION
  2857.     AH = A5h
  2858.     SI = 4358h
  2859. Return: AX = ???
  2860.     SI = ???
  2861. Notes:    called and used internally by Super PC-Kwik when a program terminates
  2862.       via INT 21/AH=00h, INT 21/AH=31h, or INT 21/AH=4Ch
  2863.     this call is not supported by Qualitas Qcache 4.00
  2864. Index:    PC-Cache
  2865. SeeAlso: AH=A6h,AH=A9h,INT 21/AH=00h,INT 21/AH=31h,INT 21/AH=4Ch
  2866. --------c-13A6--SI4358-----------------------
  2867. INT 13 CU - Super PC-Kwik v5.10+ - PROGRAM LOAD NOTIFICATION
  2868.     AH = A6h
  2869.     SI = 4358h
  2870.     DS:DX -> ASCIZ program name
  2871.     ES:BX -> EXEC data block (see #1242 at INT 21/AH=4Bh)
  2872. Return: ???
  2873. Note:    called and used internally by Super PC-Kwik when a program is loaded
  2874.       with INT 21/AX=4B00h
  2875. SeeAlso: AH=A5h,AH=A9h,INT 21/AH=4Bh
  2876. --------c-13A7--SI4358-----------------------
  2877. INT 13 CU - Super PC-Kwik 5.1 - ???
  2878.     AH = A7h
  2879.     SI = 4358h
  2880. Return: ???
  2881. Note:    called and used internally by Super PC-Kwik on some INT 21 calls
  2882. SeeAlso: AH=A5h,AH=A6h,AH=A8h
  2883. --------v-13A759-----------------------------
  2884. INT 13 U - Novell DOS 7 - SDRes v27.03 - ???
  2885.     AX = A759h
  2886. Return: AX = 59A7h if installed
  2887.         DX:BX -> ??? data
  2888. Program: SDRes is the resident portion of the Search&Destroy antiviral by
  2889.       Fifth Generation Systems, as bundled with Novell DOS 7
  2890. SeeAlso: INT 21/AH=0Eh/DL=ADh
  2891. --------c-13A8--SI4358-----------------------
  2892. INT 13 CU - Super PC-Kwik 5.1 - ???
  2893.     AH = A8h
  2894.     SI = 4358h
  2895. Return: ???
  2896. Note:    called and used internally by Super PC-Kwik on some INT 21 calls
  2897. SeeAlso: AH=A5h,AH=A6h,AH=A7h
  2898. --------c-13A9--SI4358-----------------------
  2899. INT 13 CU - Super PC-Kwik 5.1 - EXITCODE RETRIEVAL NOTIFICATION
  2900.     AH = A9h
  2901.     SI = 4358h
  2902. Return: ???
  2903. Note:    called and used internally by Super PC-Kwik when an application issues
  2904.       INT 21/AH=4Dh
  2905. SeeAlso: AH=A5h,AH=A6h,INT 21/AH=4Dh
  2906. --------c-13AA--SI4358-----------------------
  2907. INT 13 - Super PC-Kwik v4+ - ???
  2908.     AH = AAh
  2909.     SI = 4358h
  2910.     ???
  2911. Return: ???
  2912. Note:    Qualitas Qcache is an OEM version of Super PC-Kwik, and thus supports
  2913.       this call
  2914. --------c-13AB--SI4358-----------------------
  2915. INT 13 - Super PC-Kwik v4+ - ???
  2916.     AH = ABh
  2917.     SI = 4358h
  2918.     ???
  2919. Return: ???
  2920. Note:    Qualitas Qcache is an OEM version of Super PC-Kwik, and thus supports
  2921.       this call
  2922. --------c-13AC--SI4358-----------------------
  2923. INT 13 - Super PC-Kwik v4+ - ???
  2924.     AH = ACh
  2925.     SI = 4358h
  2926.     ???
  2927. Return: ???
  2928. Note:    Qualitas Qcache is an OEM version of Super PC-Kwik, and thus supports
  2929.       this call
  2930. --------d-13AD-------------------------------
  2931. INT 13 - Priam HARD DISK CONTROLLER???
  2932.     AH = ADh
  2933.     ???
  2934. Return: ???
  2935. Note:    this call is made from Priam's EFMT.EXE (low-level formatter), probably
  2936.       to check the ROM type on the controller for their hard disk kits
  2937. SeeAlso: AH=70h
  2938. --------c-13AD--SI4358-----------------------
  2939. INT 13 - Super PC-Kwik v4+ - ???
  2940.     AH = ADh
  2941.     SI = 4358h
  2942.     ???
  2943. Return: ???
  2944. Note:    Qualitas Qcache is an OEM version of Super PC-Kwik, and thus supports
  2945.       this call
  2946. --------c-13AE--SI4358-----------------------
  2947. INT 13 - Super PC-Kwik v5.10+ - ???
  2948.     AH = AEh
  2949.     SI = 4358h
  2950.     ???
  2951. Return: ???
  2952. --------c-13B0--SI4358-----------------------
  2953. INT 13 - Super PC-Kwik v3.20+ - ???
  2954.     AH = B0h
  2955.     SI = 4358h
  2956.     ???
  2957. Return: ???
  2958. Note:    PC Tools PC-Cache 5.x is an OEM version of Super PC-Kwik, and thus
  2959.       supports this call; Qualitas Qcache does not support it
  2960. Index:    PC-Cache
  2961. --------v-13EC00-----------------------------
  2962. INT 13 - VIRUS - "Tiso" - INSTALLATION CHECK
  2963.     AX = EC00h
  2964. Return: CF clear if installed
  2965. SeeAlso: AH=F2h,INT 12/AX=4350h/BX=4920h
  2966. --------d-13EE-------------------------------
  2967. INT 13 - SWBIOS - SET 1024-CYLINDER FLAG
  2968.     AH = EEh
  2969.     DL = drive number (80h, 81h)
  2970. Return: CF clear
  2971.        AH = 00h
  2972. Program: SWBIOS is a TSR by Ontrack Computer Systems
  2973. Desc:    the following INT 13 call will add 1024 to the specified cylinder
  2974.       number to get the actual cylinder number desired
  2975. Notes:    the flag is cleared by all INT 13 calls except AH=EEh and AH=EFh
  2976.     Disk Manager also supports these calls
  2977.     this function is also supported by HyperDisk v4.01+ and PC-Cache v5.5+,
  2978.       in order to allow caching of drives using SWBIOS to access more than
  2979.       1024 cylinders
  2980.     for software which supports that call, this function is equivalent to
  2981.       calling AH=EFh with CX=0400h
  2982. SeeAlso: AH=F9h,AH=FEh,INT 16/AX=FFA5h/CX=1111h,INT 2F/AX=DF00h
  2983. Index:    PC-Cache;huge disks|Disk Manager
  2984. --------c-13EF-------------------------------
  2985. INT 13 - Ontrack Drive Rocket - SET CYLINDER OFFSET
  2986.     AH = EFh
  2987.     CX = cylinder offset for next INT 13 call
  2988.     DL = drive number (80h, 81h)
  2989. Return: CF clear
  2990.         AH = 00h
  2991. Program: Drive Rocket is a drive accelerator by Ontrack Computer Systems for
  2992.       IDE drives supporting the read multiple and write multiple commands
  2993. Desc:    the following INT 13 call will add the number given by this call to
  2994.       the specified cylinder to get the actual cylinder number, then reset
  2995.       the offset to zero
  2996. Note:    this function is also supported by the NOW! disk cache, and presumably
  2997.       newer versions of SWBIOS and Disk Manager
  2998.     for software which supports this call, AH=EEh is equivalent to calling
  2999.       this function with CX=0400h
  3000.     the cylinder offset is reset to 0 by all INT 13 called except AH=EEh
  3001.       and AH=EFh
  3002. SeeAlso: AX=7B00h
  3003. --------v-13F2-------------------------------
  3004. INT 13 - VIRUS - "Neuroquila" - INSTALLATION CHECK
  3005.     AH = F2h
  3006. Return: CF ??? if installed
  3007. SeeAlso: AX=EC00h,INT 12/AX=4350h/BX=4920h,INT 21/AX=0B56h
  3008. --------d-13F9-------------------------------
  3009. INT 13 - SWBIOS - INSTALLATION CHECK
  3010.     AH = F9h
  3011.     DL = drive number (80h,81h)
  3012. Return: CF clear
  3013.         DX = configuration word
  3014.         bit 15 set if other SWBIOS extensions available
  3015.     CF set on error
  3016. Program: SWBIOS is a TSR by Ontrack Computer Systems
  3017. Note:    Disk Manager also supports these calls
  3018. SeeAlso: AH=EEh
  3019. Index:    Disk Manager
  3020. --------v-13FA--DX5945-----------------------
  3021. INT 13 - PC Tools v8+ VSAFE, VWATCH - API
  3022.     AH = FAh
  3023.     DX = 5945h
  3024.     AL = function (00h-07h)
  3025. Return: varies by function
  3026.     if not installed:
  3027.         CF set
  3028.         AH = 01h
  3029. Note:    this API is identical to the ones on INT 16/AH=FAh and INT 21/AH=FAh,
  3030.       so it is listed in its entirety under INT 16/AX=FA00h and following
  3031. SeeAlso: INT 16/AX=FA00h
  3032. --------v-13FD50------------------------
  3033. INT 13 - VIRUS - "Predator" - INSTALLATION CHECK
  3034.     AX = FD50h
  3035. Return: AX = 50FDh if resident
  3036. SeeAlso: AX=5001h"VIRUS",INT 16/AH=DDh"VIRUS"
  3037. --------d-13FE-------------------------------
  3038. INT 13 - SWBIOS - GET EXTENDED CYLINDER COUNT
  3039.     AH = FEh
  3040.     DL = drive number (80h, 81h)
  3041. Return: CF clear
  3042.     DX = number of cylinders beyond 1024 on drive
  3043. Program: SWBIOS is a TSR by Ontrack Computer Systems
  3044. Notes:    standard INT 13/AH=08h will return a cylinder count truncated to 1024
  3045.     BIOS without this extension would return count modulo 1024
  3046.     Disk Manager also supports these calls
  3047. SeeAlso: AH=EEh
  3048. ----------13FF-------------------------------
  3049. INT 13 - Windows95 - ???
  3050.     AH = FFh
  3051.     DL - drive number (80h)
  3052. Return: ???
  3053. Note:    this function is called by the Windows95 Master Boot Record
  3054. --------B-13FF-------------------------------
  3055. INT 13 - IBM SurePath BIOS - Officially "Private" Function
  3056.     AH = FFh
  3057. --------U-13FFFFBHAA-------------------------
  3058. INT 13 - UNIQUE UX Turbo Utility - SET TURBO MODE
  3059.     AX = FFFFh
  3060.     BH = AAh
  3061.     BL = subfunction
  3062.         00h installation check
  3063.         Return: AX = 1234h if installed
  3064.         01h turn on Turbo mode
  3065.         02h turn off Turbo mode
  3066.         03h set Turbo mode according to hardware switch
  3067.         04h set disk access to Turbo mode
  3068.         05h set disk access to Normal mode
  3069. Return: nothing
  3070. SeeAlso: INT 15/AH=DFh
  3071. Index:    installation check;UNIQUE UX Turbo Utility
  3072. --------S-14---------------------------------
  3073. INT 14 - SERIAL - Digiboard DigiCHANNEL PC/X* Extender INT 14 (XAPCM232.SYS)
  3074. Note:    the installation check for this driver is to determine whether the
  3075.       "~DOSXAM~" character device exists
  3076. Index:    installation check;Digiboard DigiCHANNEL
  3077. --------S-1400-------------------------------
  3078. INT 14 - SERIAL - INITIALIZE PORT
  3079.     AH = 00h
  3080.     AL = port parameters (see #0219)
  3081.     DX = port number (00h-03h) (04h-43h for Digiboard XAPCM232.SYS)
  3082. Return: AH = line status (see #0223)
  3083.         FFh if error on Digiboard XAPCM232.SYS
  3084.     AL = modem status (see #0224)
  3085. Notes:    default handler is at F000h:E739h in IBM PC and 100% compatible BIOSes
  3086.     since the PCjr supports a maximum of 4800 bps, attempting to set 9600
  3087.       bps will result in 4800 bps
  3088.     various network and serial-port drivers support the standard BIOS
  3089.       functions with interrupt-driven I/O instead of the BIOS's polled I/O
  3090.     the 04/08/93 Compaq system ROM uses only the low two bits of DX
  3091. SeeAlso: AH=04h"SERIAL",AH=04h"MultiDOS",AH=05h"SERIAL",AH=57h
  3092. SeeAlso: AX=8000h"ARTICOM",AH=81h"COMM-DRV",AH=82h"COURIERS",AH=8Ch
  3093. SeeAlso: MEM 0040h:0000h,PORT 03F8h"Serial"
  3094.  
  3095. Bitfields for serial port parameters:
  3096. Bit(s)    Description    (Table 0219)
  3097.  7-5    data rate (110,150,300,600,1200,2400,4800,9600 bps)
  3098.  4-3    parity (00 or 10 = none, 01 = odd, 11 = even)
  3099.  2    stop bits (set = 2, clear = 1)
  3100.  1-0    data bits (00 = 5, 01 = 6, 10 = 7, 11 = 8)
  3101. SeeAlso: #0221,#0226,#0227,#0228
  3102. --------S-1400-------------------------------
  3103. INT 14 - FOSSIL (Fido/Opus/Seadog Standard Interface Level) - INITIALIZE
  3104.     AH = 00h
  3105.     AL = initializing parameters
  3106.         7 - 6 - 5       4 - 3     2      1 - 0
  3107.         -BAUD RATE-       PARITY   STOP   WORD
  3108.                     BITS  LENGTH
  3109.         000 19200 bd   00 none  0: 1  00: 5
  3110.         001 38400 bd   01 odd   1: 2  01: 6
  3111.         010      300 bd   11 even      10: 7
  3112.         011      600 bd          11: 8
  3113.         100     1200 bd
  3114.         101     2400 bd
  3115.         110     4800 bd
  3116.         111     9600 bd (4800 on PCjr)
  3117.     DX = port number (0-3 or FFh if only performing non-I/O setup)
  3118. Return: AH = RS-232 status code bits (see #0220)
  3119.     AL = modem status bits
  3120.         bit 3: always 1
  3121.         bit 7: DCD - carrier detect
  3122. SeeAlso: #0219,AH=05h"FOSSIL",AH=81h"COMM-DRV",AH=82h"COURIERS"
  3123.  
  3124. Bitfields for FOSSIL RS-232 status:
  3125. Bit(s)    Description    (Table 0220)
  3126.  0    RDA - input data is available in buffer
  3127.  1    OVRN - data has been lost
  3128.  5    THRE - room is available in output buffer
  3129.  6    TSRE - output buffer empty
  3130. --------S-1400-------------------------------
  3131. INT 14 - Tandy 2000 - SERIAL - RESET COMM PORT
  3132.     AH = 00h
  3133.     AL = RS-232C parameters (see #0221)
  3134.     DL = port number
  3135.     DH = protocol
  3136.         bit 0: use XON/XOFF on received data
  3137.         bit 1: use XON/XOFF when transmitting
  3138. Return: AH = line status (see #0223)
  3139.     AL = modem status (see #0224)
  3140. Note:    this interrupt is identical to INT 53 on the Tandy 2000
  3141. SeeAlso: AH=04h"Tandy 2000",INT 53"Tandy 2000"
  3142. --------S-1400-------------------------------
  3143. INT 14 - MBBIOS - INITIALIZE PORT
  3144.     AH = 00h
  3145.     AL = port parameters (see #0221)
  3146.     DX = port number
  3147. Return: AH = line status (see #0223)
  3148.     AL = modem status (see #0224)
  3149. Note:    MBBIOS was written by H. Roy Engehausen
  3150. SeeAlso: AH=04h"MBBIOS",AH=05h"MBBIOS",AH=09h"MBBIOS"
  3151.  
  3152. Bitfields for MBBIOS port parameters:
  3153. Bit(s)    Description    (Table 0221)
  3154.  7-5    data rate
  3155.     (normally 110,150,300,600,1200,2400,4800,9600 bps;
  3156.     9600,14400,19200,28800,38400,57600,115200,330400 bps
  3157.     if the high-speed option is set)
  3158.  4-3    parity (00 or 10 = none, 01 = odd, 11 = even)
  3159.  2    stop bits (set = 2, clear = 1)
  3160.  1-0    data bits (00 = 5, 01 = 6, 10 = 7, 11 = 8)
  3161. SeeAlso: #0219
  3162. --------N-1400--DXFFFF-----------------------
  3163. INT 14 - Connection Manager - MODIFY DEFAULT CONNECTION PARAMETERS
  3164.     AH = 00h
  3165.     DX = FFFFh
  3166.     ES:DI -> vector string specifying new parameters
  3167. Return: AH = return code (00h,03h) (see #0222)
  3168. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  3169.       serial ports over an IPX or NetBIOS-based network
  3170. Note:    if DX is 0-3 on entry, Connection Manager emulates the standard BIOS
  3171.       function, but redirects the port over the network; if DX is any other
  3172.       value, the call is chained
  3173. SeeAlso: AH=04h/DX=FFFFh,AH=08h/DX=FFFFh,AH=0Ah/DX=FFFFh
  3174.  
  3175. (Table 0222)
  3176. Values for Connection Manager return code:
  3177.  00h    successful
  3178.  01h    no such connection
  3179.  02h    invalid connection ID
  3180.  03h    invalid subvector found
  3181.  04h    communication error (check BH)
  3182.  06h    insufficient resources, retry later
  3183.  FFh    no data available
  3184. --------S-1401-------------------------------
  3185. INT 14 - SERIAL - WRITE CHARACTER TO PORT
  3186.     AH = 01h
  3187.     AL = character to write
  3188.     DX = port number (00h-03h) (04h-43h for Digiboard XAPCM232.SYS)
  3189. Return: AH bit 7 clear if successful
  3190.     AH bit 7 set on error
  3191.     AH bits 6-0 = port status (see #0223)
  3192. Notes:    various network and serial-port drivers support the standard BIOS
  3193.       functions with interrupt-driven I/O instead of the BIOS's polled I/O
  3194.     the 04/08/93 Compaq system ROM uses only the low two bits of DX
  3195. SeeAlso: AH=02h,AH=0Bh"FOSSIL",AX=8000h"ARTICOM",AH=89h
  3196. --------N-1401--DXFFFF-----------------------
  3197. INT 14 - Connection Manager - SEND CHARACTER
  3198.     AH = 01h
  3199.     DX = FFFFh
  3200.     BH = character to send
  3201. Return: AH = return code (00h-02h,06h) (see #0222)
  3202. Notes:    if DX is 0-3 on entry, Connection Manager emulates the standard BIOS
  3203.       function, but redirects the port over the network; if DX is any other
  3204.       value, the call is chained
  3205.     this function is provided primarily for compatibility; AH=06h/DX=FFFFh
  3206.       is the preferred function because it provides better performance
  3207. SeeAlso: AH=02h/DX=FFFFh,AH=06h/DX=FFFFh,AH=09h/DX=FFFFh
  3208. --------S-1402-------------------------------
  3209. INT 14 - SERIAL - READ CHARACTER FROM PORT
  3210.     AH = 02h
  3211.     AL = 00h (ArtiCom)
  3212.     DX = port number (00h-03h (04h-43h for Digiboard XAPCM232.SYS))
  3213. Return: AH = line status (see #0223)
  3214.     AL = received character if AH bit 7 clear
  3215. Notes:    will timeout if DSR is not asserted, even if function 03h returns
  3216.       data ready
  3217.     various network and serial-port drivers support the standard BIOS
  3218.       functions with interrupt-driven I/O instead of the BIOS's polled I/O
  3219.     the 04/08/93 Compaq system ROM uses only the low two bits of DX
  3220. SeeAlso: AH=01h,AH=02h"FOSSIL",AH=84h,AH=FCh
  3221. --------S-1402-------------------------------
  3222. INT 14 - FOSSIL - RECEIVE CHARACTER WITH WAIT
  3223.     AH = 02h
  3224.     DX = port number (0-3)
  3225. Return: AL = character received
  3226.     AH = 00h
  3227. SeeAlso: AH=01h,AH=02h"SERIAL"
  3228. --------N-1402--DXFFFF-----------------------
  3229. INT 14 - Connection Manager - RECEIVE CHARACTER
  3230.     AH = 02h
  3231.     DX = FFFFh
  3232.     BH = character to send
  3233. Return: AH = return code (00h-02h,04h,FFh) (see #0222)
  3234.     BH = line status (see #0223)
  3235.     AL = received character (if any)
  3236. Notes:    if DX is 0-3 on entry, Connection Manager emulates the standard BIOS
  3237.       function, but redirects the port over the network; if DX is any other
  3238.       value, the call is chained
  3239.     this function is provided primarily for compatibility; AH=07h/DX=FFFFh
  3240.       is the preferred function because it provides better performance
  3241. SeeAlso: AH=02h/DX=FFFFh,AH=03h/DX=FFFFh,AH=06h/DX=FFFFh
  3242. --------S-1403-------------------------------
  3243. INT 14 - SERIAL - GET PORT STATUS
  3244.     AH = 03h
  3245.     AL = 00h (ArtiCom)
  3246.     DX = port number (00h-03h) (04h-43h for Digiboard XAPCM232.SYS)
  3247. Return: AH = line status (see #0223)
  3248.     AL = modem status (see #0224)
  3249.     AX = 9E00h if disconnected (ArtiCom)
  3250. Note:    the 04/08/93 Compaq system ROM uses only the low two bits of DX
  3251. SeeAlso: AH=00h,AH=07h"MultiDOS",AX=8000h"ARTICOM",AH=81h"COURIERS",AX=FD02h
  3252.  
  3253. Bitfields for serial line status:
  3254. Bit(s)    Description    (Table 0223)
  3255.  7    timeout
  3256.  6    transmit shift register empty
  3257.  5    transmit holding register empty
  3258.  4    break detected
  3259.  3    framing error
  3260.  2    parity error
  3261.  1    overrun error
  3262.  0    receive data ready
  3263. Note:    for COMM-DRV, if bit 7 is set, an error occurred, and may be retrieved
  3264.       through a separate call (see AX=8000h"COMM-DRV")
  3265.  
  3266. Bitfields for modem status:
  3267. Bit(s)    Description    (Table 0224)
  3268.  7    carrier detect
  3269.  6    ring indicator
  3270.  5    data set ready
  3271.  4    clear to send
  3272.  3    delta carrier detect
  3273.  2    trailing edge of ring indicator
  3274.  1    delta data set ready
  3275.  0    delta clear to send
  3276. --------N-1403--DXFFFF-----------------------
  3277. INT 14 - Connection Manager - RETURN COMMUNICATION PORT STATUS
  3278.     AH = 03h
  3279.     DX = FFFFh
  3280.     AL = connection ID
  3281. Return: AH = return code (00h-02h) (see #0222)
  3282.     BH = line status (see #0225)
  3283.     BL = modem status (see #0224) (only bits 4,5,7; all others zero)
  3284. Notes:    if DX is 0-3 on entry, Connection Manager emulates the standard BIOS
  3285.       function, but redirects the port over the network; if DX is any other
  3286.       value, the call is chained
  3287. SeeAlso: AH=00h/DX=FFFFh,AH=04h/DX=FFFFh,AH=0Ah/DX=FFFFh
  3288.  
  3289. Bitfields for Connection Manager line status:
  3290. Bit(s)    Description    (Table 0225)
  3291.  7    CTS changed
  3292.  6    current CTS state
  3293.  5    timeout
  3294.  4    break
  3295.  3    framing error
  3296.  2    parity error
  3297.  1    overrun
  3298.  0    current carrier state (0 active, 1 no carrier)
  3299. --------S-1404-------------------------------
  3300. INT 14 - SERIAL - EXTENDED INITIALIZE (CONVERTIBLE,PS)
  3301.     AH = 04h
  3302.     AL = break status
  3303.         00h if break
  3304.         01h if no break
  3305.     BH = parity (see #0226)
  3306.     BL = number of stop bits
  3307.         00h one stop bit
  3308.         01h two stop bits (1.5 if 5 bit word length)
  3309.     CH = word length (see #0227)
  3310.     CL = bps rate (see #0228)
  3311.     DX = port number
  3312. Return: AX = port status code (see #0223,#0224)
  3313. SeeAlso: AH=00h,AH=1Eh,AX=8000h"ARTICOM"
  3314.  
  3315. (Table 0226)
  3316. Values for serial port parity:
  3317.  00h    no parity
  3318.  01h    odd parity
  3319.  02h    even parity
  3320.  03h    stick parity odd
  3321.  04h    stick parity even
  3322. SeeAlso: #0219,#0227,#0228,#0229
  3323.  
  3324. (Table 0227)
  3325. Values for serial port word length:
  3326.  00h    5 bits
  3327.  01h    6 bits
  3328.  02h    7 bits
  3329.  03h    8 bits
  3330. SeeAlso: #0219,#0226,#0228,#0264
  3331.  
  3332. (Table 0228)
  3333. Values for serial port bps rate:
  3334.  00h    110 (19200 if ComShare installed)
  3335.  01h    150 (38400 if ComShare installed)
  3336.  02h    300
  3337.  03h    600 (14400 if ComShare installed)
  3338.  04h    1200
  3339.  05h    2400
  3340.  06h    4800 (28800 if ComShare installed)
  3341.  07h    9600
  3342.  08h    19200
  3343. ---ComShare---
  3344.  09h    38400
  3345.  0Ah    57600
  3346.  0Bh    115200
  3347. SeeAlso: #0219,#0226,#0228,#0265,#0272,AH=36h,#0283,#0523,#2570
  3348. --------S-1404-------------------------------
  3349. INT 14 - Tandy 2000 - SERIAL - FLUSH COMM BUFFER
  3350.     AH = 04h
  3351.     DL = port number
  3352.     DH = protocol
  3353.         bit 0: use XON/XOFF on received data
  3354.         bit 1: use XON/XOFF when transmitting
  3355. Return: nothing
  3356. Desc:    clears the serial interface buffer
  3357. Note:    this interrupt is identical to INT 53 on the Tandy 2000
  3358. SeeAlso: AH=00h"Tandy 2000",INT 53"Tandy 2000"
  3359. --------S-1404-------------------------------
  3360. INT 14 - FOSSIL - INITIALIZE DRIVER
  3361.     AH = 04h
  3362.     DX = port number
  3363.     optionally BX=4F50h
  3364.            ES:CX -> byte to be set upon ^C
  3365. Return: AX = 1954h (if successful)
  3366.     BL = maximum function number supported (excluding 7Eh and above)
  3367.     BH = revision of FOSSIL specification supported
  3368.     DTR is raised
  3369. Note:    the word at offset 6 in the interrupt handler contains 1954h, and the
  3370.       following byte contains the maximum function number supported; this
  3371.       can serve as an installation check
  3372. SeeAlso: AH=05h"FOSSIL",AH=1Ch,INT 11/AH=BCh
  3373. Index:    installation check;FOSSIL
  3374. --------S-1404-------------------------------
  3375. INT 14 - MultiDOS Plus IODRV - INITIALIZE PORT
  3376.     AH = 04h
  3377. Return: port initialized; if Hayes-compatible modem, a connection has been
  3378.       established
  3379. Note:    the port number is stored at offset BEh in the Task Control Block
  3380.       (see #0375 at INT 15/AH=13h"MultiDOS")
  3381. SeeAlso: AH=00h,AH=05h"MultiDOS",AH=20h"MultiDOS",INT 15/AH=13h"MultiDOS"
  3382. --------S-1404-------------------------------
  3383. INT 14 - Digiboard DigiCHANNEL PC/X* - CHANGE BAUD RATE
  3384.     AH = 04h
  3385.     AL = initializing parameters (see #0229)
  3386.     BX = baud rate
  3387.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  3388. Return: AH = status
  3389.         00h successful
  3390.         FFh error
  3391. SeeAlso: AH=05h"Digiboard"
  3392.  
  3393. Bitfields for Digiboard initializing parameters:
  3394. Bit(s)    Description    (Table 0229)
  3395.  7-5    unused
  3396.  4-3    parity (00 none, 01 odd, 11 even)
  3397.  2    stop bits (0 = one, 1 = two)
  3398.  1-0    data bits (00 = five, 01 = six, 10 = seven, 11 = eight)
  3399. SeeAlso: #0226,#0227
  3400. --------S-1404-------------------------------
  3401. INT 14 - MBBIOS - INSTALLATION CHECK
  3402.     AH = 04h
  3403.     DX = port number
  3404. Return: AX = AA55h if installed on specified port
  3405. SeeAlso: AH=00h"MBBIOS",AH=09h"MBBIOS"
  3406. --------N-1404--DXFFFF-----------------------
  3407. INT 14 - Connection Manager - OPEN COMMUNICATION
  3408.     AH = 04h
  3409.     DX = FFFFh
  3410.     ES:DI -> Connection Request protocol vector (see #0230)
  3411. Return: AH = return code
  3412.         00h successful
  3413.         AL = connection ID
  3414.         BH = connection type
  3415.             00h direct connection or no dialing
  3416.             01h Connection Server dialed phone
  3417.         01h no response from Connection Server
  3418.         03h invalid request
  3419. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  3420.       serial ports over an IPX or NetBIOS-based network
  3421. Desc:    initiate a connection to the Connection Server listed in the current
  3422.       Client parameter set
  3423. Notes:    if DX is 0-3 on entry, Connection Manager emulates the standard BIOS
  3424.       function, but redirects the port over the network; if DX is any other
  3425.       value, the call is chained
  3426.     all subvectors of the Connection Request vector are optional; if
  3427.       missing, default values are provided by the default connection
  3428.       parameter set
  3429. SeeAlso: AH=00h/DX=FFFFh,AH=05h/DX=FFFFh,AH=06h/DX=FFFFh,AH=07h/DX=FFFFh
  3430. SeeAlso: AH=0Ah/DX=FFFFh,AH=0Ch/DX=FFFFh
  3431.  
  3432. Format of Connection Manager protocol command vector:
  3433. Offset    Size    Description    (Table 0230)
  3434.  00h    WORD    (big-endian) total length of command (including this word)
  3435.  02h    WORD    (big-endian) command code
  3436.         EF01h Connection Request
  3437.         EF06h Modify Connection Parameters
  3438.  04h  N BYTEs    list of subvectors (see #0232)
  3439.         allowable subvector types are 01h-04h,17h,18h for command code
  3440.           EF01h; 03h,04h for command code EF06h (see #0231)
  3441.  
  3442. (Table 0231)
  3443. Values for Connection Manager subvector type code:
  3444.  01h    Connection ID
  3445.  02h    Destination ID
  3446.  03h    Asynchronous line parameters
  3447.  04h    Data transfer parameters
  3448.  09h    Line speed
  3449.  0Ah    Serial coding
  3450.  0Bh    Packet size
  3451.  0Ch    Timers
  3452.  0Dh    Special characters
  3453.  0Eh    Target ID
  3454.  0Fh    Telephone number
  3455.  10h    ASCII destination ID
  3456.  11h    Parity
  3457.  12h    Bits per character
  3458.  13h    Number of stop bits
  3459.  14h    Packet timer
  3460.  15h    Intercharacter timer
  3461.  17h    Flags
  3462.  18h    Parameter ranges
  3463.  19h    Flow control
  3464.  
  3465. Format of Connection Manager subvector:
  3466. Offset    Size    Description    (Table 0232)
  3467.  00h    BYTE    length of subvector
  3468.  01h    BYTE    type code (see #0231)
  3469.  02h N-2 BYTEs    data, which may include subvectors
  3470. SeeAlso: #0233,#0234,#0235,#0236,#0237,#0238,#0239,#0240,#0241,#0242,#0243
  3471. SeeAlso: #0244,#0245,#0247,#0248,#0249,#0250,#0251,#0252,#0230
  3472.  
  3473. Format of Connection ID subvector:
  3474. Offset    Size    Description    (Table 0233)
  3475.  00h    BYTE    03h (length)
  3476.  01h    BYTE    01h (subvector "Connection ID")
  3477.  02h    BYTE    connection ID
  3478. SeeAlso: #0232
  3479.  
  3480. Format of Destination ID subvector:
  3481. Offset    Size    Description    (Table 0234)
  3482.  00h    BYTE    length
  3483.  01h    BYTE    02h (subvector "Destination ID")
  3484.  02h  N BYTEs    subvector(s) of type 0Eh, 0Fh, or 10h
  3485. SeeAlso: #0232
  3486.  
  3487. Format of Asynchronous line parameters subvector:
  3488. Offset    Size    Description    (Table 0235)
  3489.  00h    BYTE    length
  3490.  01h    BYTE    03h (subvector "Asynchronous line parameters")
  3491.  02h  N BYTEs    subvector(s) of type 09h, 0Ah, or 19h
  3492. SeeAlso: #0232
  3493.  
  3494. Format of Data transfer parameters subvector:
  3495. Offset    Size    Description    (Table 0236)
  3496.  00h    BYTE    length
  3497.  01h    BYTE    04h (subvector "Data transfer parameters")
  3498.  02h  N BYTEs    subvector(s) of type 0Bh, 0Ch, or 0Dh
  3499. SeeAlso: #0232
  3500.  
  3501. Format of Line speed subvector:
  3502. Offset    Size    Description    (Table 0237)
  3503.  00h    BYTE    04h (length)
  3504.  01h    BYTE    09h (subvector "Line speed")
  3505.  02h    WORD    bit map, highest set bit selects speed
  3506.         bit 0: 2400
  3507.         bits 1-7: 1800, 1200, 600, 300, 115200, 150, 110 bps
  3508.         bits 8-15: 57600, 38400, 19200, 14400, 9600, 7200, 4800, 3600
  3509. SeeAlso: #0232
  3510.  
  3511. Format of Serial coding subvector:
  3512. Offset    Size    Description    (Table 0238)
  3513.  00h    BYTE    length
  3514.  01h    BYTE    0Ah (subvector "Serial coding")
  3515.  02h  N BYTEs    subvector(s) of type 11h, 12h, or 13h
  3516. SeeAlso: #0232
  3517.  
  3518. Format of Packet size subvector:
  3519. Offset    Size    Description    (Table 0239)
  3520.  00h    BYTE    04h (length)
  3521.  01h    BYTE    0Bh (subvector "Packet size")
  3522.  02h    WORD    (big-endian) packet size, 1 to 1024
  3523. SeeAlso: #0232
  3524.  
  3525. Format of Timers subvector:
  3526. Offset    Size    Description    (Table 0240)
  3527.  00h    BYTE    length
  3528.  01h    BYTE    0Ch (subvector "Timers")
  3529.  02h  8 BYTEs    subvector of type 14h or 15h
  3530. SeeAlso: #0232
  3531.  
  3532. Format of Special characters subvector:
  3533. Offset    Size    Description    (Table 0241)
  3534.  00h    BYTE    length
  3535.  01h    BYTE    0Dh (subvector "Special characters")
  3536.  02h  N BYTEs    list of ASCII characters to be used as EOM or EOB
  3537. SeeAlso: #0232
  3538.  
  3539. Format of Target ID:
  3540. Offset    Size    Description    (Table 0242)
  3541.  00h    BYTE    length
  3542.  01h    BYTE    0Eh (subvector "Target ID")
  3543.  02h  N BYTEs    target ID, 1-16 bytes
  3544. SeeAlso: #0232
  3545.  
  3546. Format of Telephone number subvector:
  3547. Offset    Size    Description    (Table 0243)
  3548.  00h    BYTE    length
  3549.  01h    BYTE    0Fh (subvector "Telephone number")
  3550.  02h  N BYTEs    telephone number
  3551. SeeAlso: #0232
  3552.  
  3553. Format of ASCII destination ID subvector:
  3554. Offset    Size    Description    (Table 0244)
  3555.  00h    BYTE    length
  3556.  01h    BYTE    10h (subvector "ASCII destination ID")
  3557.  02h  N BYTEs    destination ID
  3558. SeeAlso: #0232
  3559.  
  3560. Format of Parity subvector:
  3561. Offset    Size    Description    (Table 0245)
  3562.  00h    BYTE    03h (length)
  3563.  01h    BYTE    11h (subvector "Parity")
  3564.  02h    BYTE    parity type (see #0246)
  3565. SeeAlso: #0232
  3566.  
  3567. Bitfields for Connection Manager parity type:
  3568. Bit(s)    Description    (Table 0246)
  3569.  7    odd
  3570.  6    even
  3571.  5    mark
  3572.  4    space
  3573.  3    none
  3574. SeeAlso: #0245
  3575.  
  3576. Format of Bits per character subvector:
  3577. Offset    Size    Description    (Table 0247)
  3578.  00h    BYTE    03h (length)
  3579.  01h    BYTE    12h (subvector "Bits per character")
  3580.  02h    BYTE    bits per character
  3581.         bit 7: seven
  3582.         bit 6: eight
  3583. SeeAlso: #0232
  3584.  
  3585. Format of Number of stop bits subvector:
  3586. Offset    Size    Description    (Table 0248)
  3587.  00h    BYTE    03h (length)
  3588.  01h    BYTE    13h (subvector "Number of stop bits")
  3589.  02h    BYTE    stop bits
  3590.         bit 7: one
  3591.         bit 6: 1.5
  3592.         bit 5: two
  3593. SeeAlso: #0232
  3594.  
  3595. Format of Packet timer and Intercharacter timer subvectors:
  3596. Offset    Size    Description    (Table 0249)
  3597.  00h    BYTE    04h (length)
  3598.  01h    BYTE    subvector type
  3599.         14h Packet timer
  3600.         15h Intercharacter timer
  3601.  02h    WORD    (big-endian) unit of value representing 20ms
  3602. SeeAlso: #0232
  3603.  
  3604. Format of Flags subvector:
  3605. Offset    Size    Description    (Table 0250)
  3606.  00h    BYTE    03h (length)
  3607.  01h    BYTE    17h (subvector "Flags")
  3608.  02h    BYTE    flags
  3609.         bit 7: queueing requested
  3610. SeeAlso: #0232
  3611.  
  3612. Format of Parameter ranges subvector:
  3613. Offset    Size    Description    (Table 0251)
  3614.  00h    BYTE    length
  3615.  01h    BYTE    18h (subvector "Parameter ranges")
  3616.  02h  N BYTEs    subvector(s) of type 09h, 11h, 12h, or 13h
  3617. SeeAlso: #0232
  3618.  
  3619. Format of Flow control subvector:
  3620. Offset    Size    Description    (Table 0252)
  3621.  00h    BYTE    length (02h-04h)
  3622.  01h    BYTE    19h (subvector "Flow control")
  3623.  02h    BYTE    XOFF character
  3624.  03h    BYTE    XON character
  3625. Note:    if length is 02h, flow control is disabled; if length is 03h, any
  3626.       character will be accepted as XON after an XOFF
  3627. SeeAlso: #0232
  3628. --------S-140400-----------------------------
  3629. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - INSTALLATION CHECK
  3630.     AX = 0400h
  3631. Return: AX = 0FF0h
  3632. SeeAlso: AX=0401h,AX=0408h
  3633. --------S-140401-----------------------------
  3634. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - INITIALIZE MODE
  3635.     AX = 0401h
  3636.     CX = mode
  3637. Return: nothing
  3638. SeeAlso: AX=0400h,AX=0402h
  3639. --------S-140402-----------------------------
  3640. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - EXTENDED INITIALIZE
  3641.     AX = 0402h
  3642.     CL = parameters
  3643. Return: nothing
  3644. SeeAlso: AX=0400h,AX=0401h
  3645. --------S-140403-----------------------------
  3646. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - SET TIMEOUT
  3647.     AX = 0403h
  3648.     CX = timeout
  3649. Return: nothing
  3650. SeeAlso: AX=0400h
  3651. --------S-140404-----------------------------
  3652. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - CLEAR THE RECEIVE BUFFER
  3653.     AX = 0404h
  3654. Return: nothing
  3655. SeeAlso: AX=0400h,AX=0405h,AX=0406h
  3656. --------S-140405-----------------------------
  3657. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - GET RECEIVE BUFFER COUNT
  3658.     AX = 0405h
  3659. Return: AX = number of characters in buffer
  3660. SeeAlso: AX=0400h,AX=0404h,AX=0407h
  3661. --------S-140406-----------------------------
  3662. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - CLEAR THE TRANSMIT BUFFER
  3663.     AX = 0406h
  3664. Return: nothing
  3665. SeeAlso: AX=0400h,AX=0404h,AX=0407h
  3666. --------S-140407-----------------------------
  3667. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - GET TRANSMIT BUFFER COUNT
  3668.     AX = 0407h
  3669. Return: AX = number of characters in the buffer
  3670. SeeAlso: AX=0400h,AX=0405h,AX=0406h
  3671. --------S-140408-----------------------------
  3672. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - UNINSTALL
  3673.     AX = 0408h
  3674. Return: nothing
  3675. SeeAlso: AX=0400h
  3676. --------S-1405-------------------------------
  3677. INT 14 - SERIAL - EXTENDED COMMUNICATION PORT CONTROL (CONVERTIBLE,PS)
  3678.     AH = 05h
  3679.     AL = function
  3680.         00h read modem control register
  3681.           Return: BL = modem control register (see #0253)
  3682.               AH = status
  3683.         01h write modem control register
  3684.           BL = modem control register (see #0253)
  3685.           Return: AX = status
  3686.     DX = port number
  3687. Note:    also supported by ArtiCom
  3688. SeeAlso: AH=00h,AH=1Fh,AX=8000h"ARTICOM",AH=FBh
  3689.  
  3690. Bitfields for modem control register:
  3691. Bit(s)    Description    (Table 0253)
  3692.  0    data terminal ready
  3693.  1    request to send
  3694.  2    OUT1
  3695.  3    OUT2
  3696.  4    LOOP
  3697.  5-7    reserved
  3698. --------S-1405-------------------------------
  3699. INT 14 - FOSSIL - DEINITIALIZE DRIVER
  3700.     AH = 05h
  3701.     DX = port number
  3702. Return: none
  3703.     DTR is not affected
  3704. SeeAlso: AH=00h,AH=04h"FOSSIL",AH=1Dh,AH=8Dh
  3705. --------S-1405-------------------------------
  3706. INT 14 - MultiDOS Plus IODRV - READ CHARACTER FROM PORT
  3707.     AH = 05h
  3708.     AL = timeout in seconds (00h = never)
  3709. Return: AL = status
  3710.         00h successful
  3711.         AH = character read
  3712.         01h read error
  3713.         02h timed out
  3714.         other modem status (CTS, DSR) changed
  3715. Note:    the port number is stored at offset BEh in the Task Control Block
  3716. SeeAlso: AH=02h,AH=04h"MultiDOS",AH=06h"MultiDOS",AH=22h"MultiDOS"
  3717. SeeAlso: INT 15/AH=13h"MultiDOS"
  3718. --------S-1405-------------------------------
  3719. INT 14 - Digiboard DigiCHANNEL PC/X* - CHANGE PROTOCOL
  3720.     AH = 05h
  3721.     AL = protocol (see #0254)
  3722.     BH = new XOFF character (00h = current)
  3723.     BL = new XON character (00h = current)
  3724.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  3725. Return: AH = status
  3726.         00h successful
  3727.         FFh error
  3728. SeeAlso: AH=04h"Digiboard"
  3729.  
  3730. Bitfields for Digiboard protocol:
  3731. Bit(s)    Description    (Table 0254)
  3732.  7-4    unused
  3733.  3    RTS/CTS
  3734.  2    DSR
  3735.  1,0    XON/XOFF
  3736. --------S-1405-------------------------------
  3737. INT 14 - MBBIOS - DROP DTR AND RTS
  3738.     AH = 05h
  3739.     DX = port number
  3740. Return: none
  3741. SeeAlso: AH=00h"MBBIOS",AH=06h"MBBIOS",AH=06h"FOSSIL"
  3742. --------S-1405-------------------------------
  3743. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - CHANGE PORT PROTOCOL
  3744.     AH = 05h
  3745.     AL = new port protocol (see #0255)
  3746.     BH = new XOFF character
  3747.     BL = new XON character
  3748.     DX = port number
  3749. Return: AH = FFh if invalid protocol
  3750. SeeAlso: AH=00h,AH=04h"SERIAL",AH=06h"PC-MOS"
  3751.  
  3752. Bitfields for PC-MOS/386 serial port protocol:
  3753. Bit(s)    Description    (Table 0255)
  3754.  7    set to enable/disable CD monitoring, clear to set protocol
  3755. ---bit 7 set---
  3756.  4    CD monitoring enabled
  3757.  5    automatic restart enabled
  3758. ---bit 7 clear---
  3759.  0    receive XON/XOFF
  3760.  1    transmit XON/XOFF
  3761.  2    DTR/DSR
  3762.  3    RTS/CTS
  3763. --------N-1405--DXFFFF-----------------------
  3764. INT 14 - Connection Manager - CLOSE COMMUNICATION
  3765.     AH = 05h
  3766.     DX = FFFFh
  3767.     AL = connection ID
  3768. Return: AH = return code
  3769.         00h successful
  3770.         01h no such connection
  3771.         02h invalid connection ID
  3772.         AL = correct connection ID
  3773. Desc:    terminate existing connection to allow another one to be established
  3774. Note:    if DX is 0-3 on entry, Connection Manager emulates the standard BIOS
  3775.       function, but redirects the port over the network; if DX is any other
  3776.       value, the call is chained
  3777. SeeAlso: AH=04h/DX=FFFFh,AH=0Dh/DX=FFFFh
  3778. --------S-1406-------------------------------
  3779. INT 14 - FOSSIL - RAISE/LOWER DTR
  3780.     AH = 06h
  3781.     DX = port
  3782.     AL = DTR state to be set
  3783.         00h = lower
  3784.         01h = raise
  3785. Return: nothing
  3786. SeeAlso: AH=05h"MBBIOS",AH=1Ah
  3787. --------S-1406-------------------------------
  3788. INT 14 - MultiDOS Plus IODRV - WRITE CHARACTER TO PORT
  3789.     AH = 06h
  3790.     AL = character
  3791. Return: AL = status
  3792.         00h successful
  3793. Notes:    the port number is stored at offset BEh in the Task Control Block
  3794.     if output queue is full, the calling task is blocked until the
  3795.       character can be stored
  3796. SeeAlso: AH=01h,AH=04h"MultiDOS",AH=05h"MultiDOS",AH=21h"MultiDOS"
  3797. SeeAlso: INT 15/AH=13h"MultiDOS"
  3798. --------S-1406-------------------------------
  3799. INT 14 - MBBIOS - RAISE DTR AND RTS
  3800.     AH = 06h
  3801.     DX = port number
  3802. Return: none
  3803. SeeAlso: AH=05h"MBBIOS",AH=07h"MBBIOS"
  3804. --------S-1406-------------------------------
  3805. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - DRIVER 'ID' FUNCTION
  3806.     AH = 06h
  3807.     DX = port number
  3808. Return: AH bit 7 set
  3809.     AL = number of highest function supported by driver
  3810. Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible
  3811.       operating system by The Software Link, Inc.
  3812. SeeAlso: AH=18h"PC-MOS"
  3813. --------N-1406-------------------------------
  3814. INT 14 - TelAPI - WRITE BLOCK
  3815.     AH = 06h
  3816.     CX = number of characters to write
  3817.     DX = port number
  3818.     ES:DI -> buffer containing data
  3819. Return: AX = number of characters actually sent (negative on error)
  3820.     CX = ???
  3821. SeeAlso: AH=07h"TelAPI",AH=E0h"TelAPI",AH=E3h"TelAPI"
  3822. --------N-1406--DXFFFF-----------------------
  3823. INT 14 - Connection Manager - SEND CHARACTER BLOCK
  3824.     AH = 06h
  3825.     DX = FFFFh
  3826.     AL = connection ID
  3827.     CX = number of characters to send
  3828.     ES:DI -> buffer containing data to be sent
  3829. Return: AH = return code (see #0222)
  3830. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  3831.       serial ports over an IPX or NetBIOS-based network
  3832. SeeAlso: AH=04h/DX=FFFFh,AH=07h/DX=FFFFh,AH=09h/DX=FFFFh
  3833. --------S-1407-------------------------------
  3834. INT 14 - FOSSIL - RETURN TIMER TICK PARAMETERS
  3835.     AH = 07h
  3836. Return: AL = timer tick interrupt number
  3837.     AH = ticks per second on interrupt number in AL
  3838.     DX = approximate number of milliseconds per tick
  3839. SeeAlso: AH=16h
  3840. --------S-1407-------------------------------
  3841. INT 14 - MultiDOS Plus IODRV - GET PORT STATUS
  3842.     AH = 07h
  3843. Return: CL = modem status (see #0224)
  3844.     CH = character at head of input queue (if any)
  3845.     DX = number of characters in input queue
  3846. Note:    the port number is stored at offset BEh in the Task Control Block
  3847. SeeAlso: AH=03h,AH=05h"MultiDOS",AH=08h"MultiDOS",AH=09h"MultiDOS"
  3848. SeeAlso: AH=23h"MultiDOS",INT 15/AH=13h"MultiDOS"
  3849. --------S-1407-------------------------------
  3850. INT 14 - MBBIOS - SEND BREAK
  3851.     AH = 07h
  3852.     DX = port number
  3853. Return: none
  3854. SeeAlso: AH=06h"MBBIOS",AH=FAh"EBIOS"
  3855. --------S-1407-------------------------------
  3856. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - SEND RS-232 BREAK
  3857.     AH = 07h
  3858.     BX = duration of break in clock ticks
  3859.     DX = port number
  3860. Return: nothing
  3861. --------N-1407-------------------------------
  3862. INT 14 - TelAPI - READ BLOCK
  3863.     AH = 07h
  3864.     CX = length of buffer in bytes
  3865.     DX = port number
  3866.     ES:DI -> buffer for data
  3867. Return: AX > 0000h number of characters actually read
  3868.     AX = 0000h host has closed connection
  3869.     AX < 0000h error code (see #0316)
  3870.     CX = ???
  3871. Note:    translates CRLF into local EOL if the connection is in ASCII mode,
  3872.       negotiates various Telnet options, and immediately executes several
  3873.       different Telnet action commands
  3874. SeeAlso: AH=06h"TelAPI",AH=E0h"TelAPI",AH=E2h"TelAPI"
  3875. --------N-1407--DXFFFF-----------------------
  3876. INT 14 - Connection Manager - RECEIVE CHARACTER BLOCK
  3877.     AH = 07h
  3878.     DX = FFFFh
  3879.     AL = connection ID
  3880.     BL = flag
  3881.         00h wait for data
  3882.         nonzero do not wait if no data avaiable
  3883.     CX = size of receive buffer
  3884.     ES:DI -> buffer for received characters
  3885. Return: AH = return code (00h-02h,04h,FFh) (see #0222)
  3886.     BH = line status (see #0225)
  3887.     CX = number of characters received
  3888. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  3889.       serial ports over an IPX or NetBIOS-based network
  3890. SeeAlso: AH=01h/DX=FFFFh,AH=04h/DX=FFFFh,AH=06h/DX=FFFFh
  3891. --------S-1408-------------------------------
  3892. INT 14 - FOSSIL - FLUSH OUTPUT BUFFER WAITING TILL ALL OUTPUT IS DONE
  3893.     AH = 08h
  3894.     DX = port number
  3895. Return: nothing
  3896. SeeAlso: AH=09h"FOSSIL"
  3897. --------S-1408-------------------------------
  3898. INT 14 - MultiDOS Plus 4.0 IODRV - GET AND RESET PORT LINE STATUS
  3899.     AH = 08h
  3900. Return: AL = line status (see #0223)
  3901.     AH destroyed
  3902. Notes:    the port number is stored at offset BEh in the Task Control Block
  3903.     on every line status change, the line status is ORed with the line
  3904.       status accumulator; this function returns the accumulator and clears
  3905.       it
  3906. SeeAlso: AH=03h,AH=04h"MultiDOS",AH=07h"MultiDOS",INT 15/AH=13h"MultiDOS"
  3907. --------S-1408-------------------------------
  3908. INT 14 - Digiboard DigiCHANNEL PC/X* - ALTERNATE STATUS CHECK
  3909.     AH = 08h
  3910.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  3911. Return: AH = RS232 status bits (see #0223 at AH=03h)
  3912.     ZF set if no characters queued
  3913.     ZF clear if character available
  3914.         AL = next character
  3915. SeeAlso: AH=03h,AH=08h"PC-MOS",AH=09h"Digiboard",AH=14h"Digiboard"
  3916. --------S-1408-------------------------------
  3917. INT 14 - MBBIOS - NON-DESTRUCTIVE READ
  3918.     AH = 08h
  3919.     DX = port number
  3920. Return: AL = character (if AH bit 0 set)
  3921.     AH = status (see #0223)
  3922. SeeAlso: AH=0Bh"MBBIOS",AH=0Ch"FOSSIL"
  3923. --------S-1408-------------------------------
  3924. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - INPUT STATUS CHECK
  3925.     AH = 08h
  3926.     DX = port number
  3927. Return: CF set if carrier loss detected
  3928.     ZF set if input buffer empty
  3929.     ZF clear if characters available
  3930.         AL = next character dequeued
  3931. --------N-1408--DXFFFF-----------------------
  3932. INT 14 - Connection Manager - RETURN DEFAULT CONNECTION PARAMETERS
  3933.     AH = 08h
  3934.     DX = FFFFh
  3935.     CX = size of buffer for parameters or 0000h to get length
  3936.     ES:DI -> buffer for parameter vector (see #0230)
  3937. Return: AH = return code
  3938.         00h successful
  3939.         CX = number of bytes required (if CX=0000h on entry)
  3940.         CX = number of bytes omitted for lack of space (if CX nonzero)
  3941.         nonzero invalid request
  3942. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  3943.       serial ports over an IPX or NetBIOS-based network
  3944. SeeAlso: AH=00h/DX=FFFFh,AH=0Fh/DX=FFFFh
  3945. --------S-1409-------------------------------
  3946. INT 14 - FOSSIL - PURGE OUTPUT BUFFER THROWING AWAY ALL PENDING OUTPUT
  3947.     AH = 09h
  3948.     DX = port number
  3949. Return: nothing
  3950. SeeAlso: AH=08h"FOSSIL",AH=0Ah"FOSSIL",AH=88h
  3951. --------S-1409-------------------------------
  3952. INT 14 - MultiDOS Plus IODRV - RESET PORT STATUS
  3953.     AH = 09h
  3954. Return: modem status byte cleared
  3955. Note:    the port number is stored at offset BEh in the Task Control Block
  3956. SeeAlso: AH=04h"MultiDOS",AH=07h"MultiDOS",INT 15/AH=13h"MultiDOS"
  3957. --------S-1409-------------------------------
  3958. INT 14 - Digiboard DigiCHANNEL PC/X* - CLEAR BUFFERS
  3959.     AH = 09h
  3960.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  3961. Return: AH = status
  3962.         00h successful
  3963.         FFh error
  3964. SeeAlso: AH=08h"Digiboard",AH=0Ah"Digiboard",AH=10h"Digiboard"
  3965. --------S-1409-------------------------------
  3966. INT 14 - MBBIOS - GET/SET OPTIONS
  3967.     AH = 09h
  3968.     AL = option byte (see #0256)
  3969.     DX = port number???
  3970. Return: AL = old option byte
  3971. SeeAlso: AH=00h"MBBIOS",AH=04h"MBBIOS",AH=10h"FOSSIL"
  3972.  
  3973. Bitfields for MBBIOS option byte:
  3974. Bit(s)    Description    (Table 0256)
  3975.  0    transmit buffering enabled
  3976.  2    hardware handshaking enabled
  3977.  5    high-speed option enabled (see AH=00h"MBBIOS",#0221)
  3978.  other    reserved
  3979. --------S-1409-------------------------------
  3980. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - RESET I/O BUFFER POINTERS
  3981.     AH = 09h
  3982.     DX = port number
  3983. Return: nothing
  3984. SeeAlso: AH=13h"PC-MOS"
  3985. --------N-1409--DXFFFF-----------------------
  3986. INT 14 - Connection Manager - SEND BREAK
  3987.     AH = 09h
  3988.     DX = FFFFh
  3989.     AL = connection ID
  3990. Return: AH = return code (00h-02h) (see #0222 at AH=00h/DX=FFFFh)
  3991. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  3992.       serial ports over an IPX or NetBIOS-based network
  3993. SeeAlso: AH=02h/DX=FFFFh,AH=03h/DX=FFFFh
  3994. --------S-140A-------------------------------
  3995. INT 14 - FOSSIL - PURGE INPUT BUFFER THROWING AWAY ALL PENDING INPUT
  3996.     AH = 0Ah
  3997.     DX = port number
  3998. Return: nothing
  3999. SeeAlso: AH=09h"FOSSIL",AH=85h
  4000. --------S-140A-------------------------------
  4001. INT 14 - Digiboard DigiCHANNEL PC/X* - INPUT QUEUE CHECK
  4002.     AH = 0Ah
  4003.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  4004. Return: AX = number of characters available in buffer
  4005. Note:    this function is also supported by the PC-MOS/386 v5.01 $serial.sys
  4006. SeeAlso: AH=09h"Digiboard",AH=0Dh"Digiboard"
  4007. --------S-140A-------------------------------
  4008. INT 14 - MBBIOS - WRITE BUFFER
  4009.     AH = 0Ah
  4010.     CX = count
  4011.     ES:DI -> buffer (see #0257)
  4012. Return: AX = status (see #0223,#0224)
  4013.     CX = unsent character count
  4014.     DI updated
  4015. Note:    the PACCOM version of MBBIOS does not use CX or ES:DI; instead, ES
  4016.       contains the segment of a buffer containing the packet to be sent,
  4017.       which by default will be freed once the packet has been sent.     Use
  4018.       AH=0Ch"MBBIOS" to allocate the buffer.
  4019. SeeAlso: AH=01h,AH=0Bh"MBBIOS",AH=0Ch"MBBIOS",AH=19h"FOSSIL"
  4020.  
  4021. Format of MBBIOS PACCOM buffer:
  4022. Offset    Size    Description    (Table 0257)
  4023.  00h 504 BYTEs    data area
  4024. 1F8h    WORD    length of data in data area
  4025. 1FAh    BYTE    flags/status
  4026.         bit 7: don't discard buffer after transmitting data
  4027.         bit 6: buffer has been transmitted
  4028. 1FBh    BYTE    reserved (0) for additional flags/status
  4029. 1FCh    WORD    user data
  4030. 1FEh    WORD    MBBIOS-internal pointer to next buffer
  4031. --------N-140A--DXFFFF-----------------------
  4032. INT 14 - Connection Manager - MODIFY ACTIVE CONNECTION PARAMETERS
  4033.     AH = 0Ah
  4034.     DX = FFFFh
  4035.     ES:DI -> vector string containing new parameters (see #0230)
  4036. Return: AH = return code (00h-03h,06h) (see #0222)
  4037. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  4038.       serial ports over an IPX or NetBIOS-based network
  4039. Note:    any subvectors valid for the Change Parameters command replace the
  4040.       existing values in the current set
  4041. SeeAlso: AH=00h/DX=FFFFh,AH=0Fh/DX=FFFFh
  4042. --------S-140B-------------------------------
  4043. INT 14 - FOSSIL - TRANSMIT NO WAIT
  4044.     AH = 0Bh
  4045.     AL = character
  4046.     DX = port number
  4047. Return: AX = result
  4048.         0000h character not accepted
  4049.         0001h character accepted
  4050. SeeAlso: AH=01h
  4051. --------S-140B-------------------------------
  4052. INT 14 - MBBIOS - READ BUFFER
  4053.     AH = 0Bh
  4054.     CX = size of buffer
  4055.     ES:DI -> buffer
  4056. Return: AH = composite line status (see #0223) formed by ORing all statuses
  4057.           on receive interrupts; bit 0 set if additional characters
  4058.           available
  4059.     AL = composite modem status (see #0224) formed by ORing all statuses
  4060.     CX = number of characters actually read
  4061.     DI updated
  4062. Note:    the PACCOM version of MBBIOS does not use CX or ES:DI on call,
  4063.       instead returning ES set to the segment of the buffer containing a
  4064.       received packet, or 0000h if no packets available; the buffer may
  4065.       be freed with AH=0Ch"MBBIOS"
  4066. SeeAlso: AH=02h,AH=08h"MBBIOS",AH=0Ah"MBBIOS",AH=0Ch"MBBIOS",AH=18h"FOSSIL"
  4067. --------N-140B--DXFFFF-----------------------
  4068. INT 14 - Connection Manager - PREPARE FOR INBOUND CONNECTION
  4069.     AH = 0Bh
  4070.     DX = FFFFh
  4071.     AL = service name
  4072.         00h use parameter file or default
  4073.         01h use specified name
  4074.         ES:DI -> 16-byte blank-padded name
  4075.     BH = connection notification
  4076.         00h program awaiting connection, don't notify user
  4077.         01h notify user on connecting
  4078.     BL = connection type
  4079.         00h connection will use Connection Manager API
  4080. Return: AH = return code (00h-02h) (see #0222 at AH=00h/DX=FFFFh)
  4081.     AL = connection ID if AH=00h
  4082. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  4083.       serial ports over an IPX or NetBIOS-based network
  4084. SeeAlso: AH=04h/DX=FFFFh,AH=0Ch/DX=FFFFh,AH=10h/DX=FFFFh
  4085. --------S-140C-------------------------------
  4086. INT 14 - FOSSIL - NON-DESTRUCTIVE READ AHEAD
  4087.     AH = 0Ch
  4088.     DX = port number
  4089. Return: AX = FFFFh character not available
  4090.     AX = 00xxh character xx available
  4091. SeeAlso: AH=08h"MBBIOS",AH=20h"FOSSIL"
  4092. --------S-140C-------------------------------
  4093. INT 14 - MBBIOS PACCOM support - BUFFER MANAGEMENT
  4094.     AH = 0Ch
  4095.     ES = segment of buffer to free, or 0000h to allocate new buffer
  4096. Return: ES = segment of allocated buffer (if ES=0000h on entry)
  4097. Note:    the PACCOM version of MBBIOS uses only ES as buffer address for
  4098.       AH=0Ah and AH=0Bh
  4099. SeeAlso: AH=0Ah"MBBIOS",AH=0Bh"MBBIOS"
  4100. --------N-140C--DXFFFF-----------------------
  4101. INT 14 - Connection Manager - TEST FOR INBOUND CONNECTION REQUEST
  4102.     AH = 0Ch
  4103.     DX = FFFFh
  4104.     AL = connection ID from AH=0Bh/DX=FFFFh
  4105. Return: AH = return code (00h-03h) (see also #0222 at AH=00h/DX=FFFFh)
  4106.         03h not prepared for inbound connection
  4107.     AL = connection ID (if AH=00h) or correct connection ID (if AH=02h)
  4108. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  4109.       serial ports over an IPX or NetBIOS-based network
  4110. SeeAlso: AH=03h/DX=FFFFh,AH=04h/DX=FFFFh,AH=0Bh/DX=FFFFh
  4111. --------S-140D-------------------------------
  4112. INT 14 - FOSSIL - KEYBOARD READ WITHOUT WAIT
  4113.     AH = 0Dh
  4114. Return: AX = result
  4115.         FFFFh character not available
  4116.         xxyyh standard IBM-style scan code
  4117. SeeAlso: AH=0Eh
  4118. --------S-140D-------------------------------
  4119. INT 14 - Digiboard DigiCHANNEL PC/X* - GET POINTER TO CH_KEY_RDY FLAG
  4120.     AH = 0Dh
  4121.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  4122. Return: ES:BX -> CH_KEY_RDY flag (see #0258)
  4123. SeeAlso: AH=0Ah"Digiboard"
  4124.  
  4125. (Table 0258)
  4126. Values for Digiboard CH_KEY_RDY flag:
  4127.  00h    receive buffer empty
  4128.  FFh    characters available
  4129. --------S-140D-------------------------------
  4130. INT 14 - MBBIOS PACCOM support - SET TXD
  4131.     AH = 0Dh
  4132.     AL = new setting (FFh = 1.0)
  4133. Return: nothing
  4134. Desc:    specify the time from RTS to start or packet
  4135. SeeAlso: AX=0D00h,AH=0Eh"MBBIOS",AH=0Fh"MBBIOS"
  4136. --------N-140D--DXFFFF-----------------------
  4137. INT 14 - Connection Manager - TERMINATE CONNECTION CLIENT ACTIVITY
  4138.     AH = 0Dh
  4139.     DX = FFFFh
  4140. Return: AH = return code
  4141.         00h successful
  4142.         nonzero operation not terminated
  4143. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  4144.       serial ports over an IPX or NetBIOS-based network
  4145. Desc:    end all Connection Client TSR activity to allow it to be removed from
  4146.       memory
  4147. SeeAlso: AH=05h/DX=FFFFh,AH=6Fh/BX=FFFFh
  4148. --------S-140D00-----------------------------
  4149. INT 14 - MBBIOS - GET AVAILABLE BYTES
  4150.     AX = 0D00h
  4151. Return: AX = bytes in transmit buffer
  4152.     CX = bytes in receive buffer
  4153. SeeAlso: AH=0Ah"MBBIOS",AH=0Bh"MBBIOS"
  4154. --------S-140D01-----------------------------
  4155. INT 14 - MBBIOS - LOWER ALL MODEM CONTROL SIGNALS
  4156.     AX = 0D01h
  4157. Return: nothing
  4158. Note:    this function lowers DTR, RTS, etc.
  4159. SeeAlso: AX=0D02h
  4160. --------S-140D02-----------------------------
  4161. INT 14 - MBBIOS - RAISE ALL MODEM CONTROL SIGNALS
  4162.     AX = 0D02h
  4163. Return: nothing
  4164. Note:    this function raises DTR, RTS, etc.
  4165. SeeAlso: AX=0D01h
  4166. --------S-140D03-----------------------------
  4167. INT 14 - MBBIOS - SET HANDSHAKE BYTE
  4168.     AX = 0D03h
  4169.     CL = new handshake byte
  4170. Return: CL = previous handshake byte
  4171. Note:    this function lowers DTR, RTS, etc.
  4172. --------S-140E-------------------------------
  4173. INT 14 - FOSSIL - KEYBOARD READ WITH WAIT
  4174.     AH = 0Eh
  4175. Return: AX = xxyyh standard IBM-style scan code
  4176. SeeAlso: AH=0Dh"FOSSIL"
  4177. --------S-140E-------------------------------
  4178. INT 14 - Digiboard DigiCHANNEL PC/X* - WRITE STRING
  4179.     AH = 0Eh
  4180.     CX = number of characters to write
  4181.     ES:BX -> string
  4182.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  4183. Return: AX = number of characters actually written
  4184.     ZF clear if successful
  4185.     ZF set on error
  4186. SeeAlso: AH=0Fh"Digiboard"
  4187. --------S-140E-------------------------------
  4188. INT 14 - MBBIOS PACCOM support - SET PERSISTENCE
  4189.     AH = 0Eh
  4190.     AL = new setting (FFh = 1.0)
  4191. Return: nothing
  4192. Desc:    specify the time from end of DCD to RTS
  4193. SeeAlso: AH=0Dh"MBBIOS",AH=0Fh"MBBIOS"
  4194. --------N-140E--DXFFFF-----------------------
  4195. INT 14 - Connection Manager - SET HARDWARE FLOW STATE
  4196.     AH = 0Eh
  4197.     DX = FFFFh
  4198.     AL = connection ID from AH=04h/DX=FFFFh
  4199.     BL = RTS state (00h off, 01h on)
  4200. Return: AH = return code (00h-03h) (see also #0222 at AH=00h/DX=FFFFh)
  4201.         03h invalid request (BL not 00h or 01h)
  4202. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  4203.       serial ports over an IPX or NetBIOS-based network
  4204. SeeAlso: AH=03h/DX=FFFFh,AH=0Ah/DX=FFFFh
  4205. --------S-140F-------------------------------
  4206. INT 14 - FOSSIL - ENABLE/DISABLE FLOW CONTROL
  4207.     AH = 0Fh
  4208.     AL = bit mask describing requested flow control (see #0259)
  4209.     DX = port number
  4210. Return: nothing
  4211. SeeAlso: AH=09h"MBBIOS",AH=10h"FOSSIL"
  4212.  
  4213. Bitfields for FOSSIL requested flow control:
  4214. Bit(s)    Description    (Table 0259)
  4215.  0    XON/XOFF on transmit (watch for XOFF while sending)
  4216.  1    CTS/RTS (CTS on transmit/RTS on receive)
  4217.  2    reserved
  4218.  3    XON/XOFF on receive (send XOFF when buffer near full)
  4219.  4-7    all 1
  4220. --------S-140F-------------------------------
  4221. INT 14 - Digiboard DigiCHANNEL PC/X* - READ STRING
  4222.     AH = 0Fh
  4223.     CX = number of characters to read
  4224.     ES:BX -> buffer
  4225.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  4226. Return: AX = number of characters read
  4227.     ZF clear if successful
  4228.     ZF set on error (line status or wrong number of characters)
  4229. SeeAlso: AH=0Eh"Digiboard"
  4230. --------S-140F-------------------------------
  4231. INT 14 - MBBIOS PACCOM support - SET SLOT TIME
  4232.     AH = 0Fh
  4233.     AL = new setting in clock ticks
  4234. Return: nothing
  4235. Desc:    specify the time from end of DCD to RTS
  4236. SeeAlso: AH=0Dh"MBBIOS",AH=0Eh"MBBIOS",AH=10h"MBBIOS"
  4237. --------N-140F--DXFFFF-----------------------
  4238. INT 14 - Connection Manager - RETURN ACTIVE CONNECTION PARAMETERS
  4239.     AH = 0Fh
  4240.     DX = FFFFh
  4241.     AL = connection ID
  4242.     CX = size of buffer or 0000h to get length of returned vector
  4243.     ES:DI -> buffer for connection parameter vector (see #0230)
  4244. Return: AH = return code (00h-02h,06h) (see #0222 at AH=00h/DX=FFFFh)
  4245.     CX = number of bytes which could not be returned because the given
  4246.           buffer was too small
  4247. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  4248.       serial ports over an IPX or NetBIOS-based network
  4249. SeeAlso: AH=08h/DX=FFFFh,AH=0Ah/DX=FFFFh
  4250. --------S-1410-------------------------------
  4251. INT 14 - FOSSIL - EXTENDED ^C/^K CHECKING AND TRANSMIT ON/OFF
  4252.     AH = 10h
  4253.     AL = bit mask
  4254.         bit 0: enable/disable ^C/^K checking
  4255.         bit 1: enable/disable the transmitter
  4256.     DX = port number
  4257. Return: nothing
  4258. SeeAlso: AH=0Fh"FOSSIL"
  4259. --------S-1410-------------------------------
  4260. INT 14 - Digiboard DigiCHANNEL PC/X* - CLEAR RECEIVE BUFFER
  4261.     AH = 10h
  4262.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  4263. Return: AH = status
  4264.         00h successful
  4265.         FFh error
  4266. SeeAlso: AH=09h"Digiboard",AH=11h"Digiboard"
  4267. --------S-1410-------------------------------
  4268. INT 14 - MBBIOS PACCOM support - SET CRC WAIT
  4269.     AH = 10h
  4270.     AL = new setting in clock ticks (should be at least 5 character times)
  4271. Return: nothing
  4272. Desc:    specify the time from start of last character to dropping RTS
  4273. SeeAlso: AH=0Dh"MBBIOS",AH=0Fh"MBBIOS"
  4274. --------N-1410--DXFFFF-----------------------
  4275. INT 14 - Connection Manager - QUERY SERVICE NAMES
  4276.     AH = 10h
  4277.     DX = FFFFh
  4278.     CL = subfunction
  4279.         00h search first
  4280.         01h search next
  4281.     ES:DI -> pattern buffer (see #0260)
  4282. Return: AH = return code (00h,01h,03h,06h) (see also #0222 at AH=00h/DX=FFFFh)
  4283.         01h no (more) matching names
  4284.         03h invalid request
  4285.     ES:DI buffer filled with reply buffer (see #0260) containing matched
  4286.           name if AH=00h
  4287. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  4288.       serial ports over an IPX or NetBIOS-based network
  4289. Desc:    obtain the names of groups and lines available for connection requests,
  4290.       and the names of active Connection Servers
  4291. SeeAlso: AH=04h/DX=FFFFh,AH=0Bh/DX=FFFFh
  4292.  
  4293. Format of Connection Manager pattern/reply buffer:
  4294. Offset    Size    Description    (Table 0260)
  4295.  00h    WORD    length of pattern (30h or 32h)
  4296.  02h 16 BYTEs    server pattern or name
  4297.  12h 16 BYTEs    group pattern or name
  4298.  22h 16 BYTEs    line pattern or name
  4299.  23h    BYTE    (optional) ???
  4300.  24h    BYTE    (optional, returned) current line status
  4301.         00h available
  4302.         01h out of service
  4303.         02h currently allocated to a connection
  4304. Note:    pattern may include '?' wildcard to match any character
  4305. --------S-1411-------------------------------
  4306. INT 14 - FOSSIL - SET CURRENT CURSOR LOCATION
  4307.     AH = 11h
  4308.     DH = row
  4309.     DL = column
  4310. Return: nothing
  4311. Note:    this is the same as INT 10/AH=02h
  4312. SeeAlso: AH=12h"FOSSIL"
  4313. --------S-1411-------------------------------
  4314. INT 14 - Digiboard DigiCHANNEL PC/X* - CLEAR TRANSMIT BUFFER
  4315.     AH = 11h
  4316.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  4317. Return: AH = status
  4318.         00h successful
  4319.         FFh error
  4320. SeeAlso: AH=09h"Digiboard",AH=10h"Digiboard"
  4321. --------S-1411-------------------------------
  4322. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - DISABLE PORT
  4323.     AH = 11h
  4324.     DX = port number
  4325. Return: AL = status
  4326.         00h successful
  4327.         01h IRQ for port is shared
  4328.         02h IRQ was reserved
  4329. SeeAlso: AH=04h"SERIAL",AH=05h"SERIAL",AH=12h"PC-MOS"
  4330. --------S-1412-------------------------------
  4331. INT 14 - FOSSIL - READ CURRENT CURSOR LOCATION
  4332.     AH = 12h
  4333. Return: DH = row
  4334.     DL = column
  4335. Note:    this is the same as INT 10/AH=03h
  4336. SeeAlso: AH=11h"FOSSIL"
  4337. --------S-1412-------------------------------
  4338. INT 14 - Digiboard DigiCHANNEL PC/X* - GET TRANSMIT BUFFER FREE SPACE
  4339.     AH = 12h
  4340.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  4341. Return: AX = number of bytes free
  4342. SeeAlso: AH=0Ah"Digiboard",AH=14h"Digiboard"
  4343. --------S-1412-------------------------------
  4344. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - GET CURRENT PORT PARAMETERS
  4345.     AH = 12h
  4346.     DX = port number
  4347. Return: AH = status
  4348.         FFh port number invalid
  4349.     AL = line parameters (see #0223)
  4350.     AH = flow control configuration (see #0255 at AH=05h"PC-MOS")
  4351.     CX:BX = bps rate
  4352.     DL = XOFF character or 00h for none
  4353.     DH = XON character or 00h for none
  4354. --------S-1413-------------------------------
  4355. INT 14 - FOSSIL - SINGLE CHARACTER ANSI WRITE TO SCREEN
  4356.     AH = 13h
  4357.     AL = character
  4358. Return: nothing
  4359. Note:    should not be called if it is unsafe to call DOS
  4360. SeeAlso: AH=15h
  4361. --------S-1413-------------------------------
  4362. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - REGISTER A PORT WITH A TERMINAL
  4363.     AH = 13h
  4364.     DX = port number
  4365. Return: AH = status
  4366.         FFh port number invalid
  4367.         else
  4368.         ES:BX -> BYTE flag (00h buffer empty, FFh buffer contains data)
  4369. SeeAlso: AH=17h"PC-MOS"
  4370. --------S-1414-------------------------------
  4371. INT 14 - FOSSIL - ENABLE OR DISABLE WATCHDOG PROCESSING
  4372.     AH = 14h
  4373.     AL = 01h enable watchdog
  4374.          00h disable watchdog
  4375.     DX = port number
  4376. Return: nothing
  4377. SeeAlso: INT 21/AH=2Bh/CX=6269h"WDTSR"
  4378. --------S-1414-------------------------------
  4379. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - OUTPUT STRING
  4380.     AH = 14h
  4381.     CX = number of characters in string
  4382.     DX = port number
  4383.     ES:BX -> string to be sent
  4384.     SI = timeout in timer ticks or 0000h for default
  4385. Return: AX = number of bytes actually sent
  4386.     ZF clear if successful
  4387.     ZF set on timeout
  4388. SeeAlso: AH=01h,AH=15h"PC-MOS"
  4389. --------S-1414-------------------------------
  4390. INT 14 - Digiboard - GET NUMBER OF BOARDS INSTALLED
  4391.     AH = 14h
  4392. Return: AX = number of boards installed
  4393. SeeAlso: AH=08h"Digiboard",AH=15h"Digiboard"
  4394. --------S-1415-------------------------------
  4395. INT 14 - FOSSIL - WRITE CHARACTER TO SCREEN USING BIOS SUPPORT ROUTINES
  4396.     AH = 15h
  4397.     AL = character
  4398. Return: nothing
  4399. SeeAlso: AH=13h"FOSSIL"
  4400. --------S-1415-------------------------------
  4401. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - INPUT STRING
  4402.     AH = 15h
  4403.     CX = size of buffer
  4404.     DX = port number
  4405.     ES:BX -> buffer for received characters
  4406.     SI = timeout in clock ticks or 0000h for default
  4407. Return: AX = number of characters actually read
  4408.     ZF set on timeout (no data available)
  4409. SeeAlso: AH=02h,AH=14h"PC-MOS",AH=16h"PC-MOS"
  4410. --------S-1415-------------------------------
  4411. INT 14 - Digiboard - ENABLE/DISABLE MEMORY
  4412.     AH = 15h
  4413.     AL = new state (00h disabled, 01h enabled)
  4414. Return: AH = status
  4415.         00h successful
  4416.         80h error
  4417.         FFh error
  4418. SeeAlso: AH=14h"Digiboard",AH=16h"Digiboard"
  4419. --------S-1416-------------------------------
  4420. INT 14 - FOSSIL - INSERT/DELETE FUNCTION FROM TIMER TICK CHAIN
  4421.     AH = 16h
  4422.     AL = function
  4423.         00h = delete
  4424.         01h = add
  4425.     ES:DX -> routine to call
  4426. Return: AX = status
  4427.         0000h successful
  4428.         0001h unsuccessful
  4429. SeeAlso: AH=07h"FOSSIL"
  4430. --------S-1416-------------------------------
  4431. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - LINK TO ANOTHER SERIAL DRIVER
  4432.     AH = 16h
  4433.     ES:BX -> calling driver's INT 14 entry point
  4434. Return: nothing
  4435. Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible
  4436.       operating system by The Software Link, Inc.
  4437. --------S-1416-------------------------------
  4438. INT 14 - Digiboard DigiCHANNEL PC/X* - CCB COMMAND
  4439.     AH = 16h
  4440.     AL = CCB command number (see #0261) (see also following entries)
  4441.     BL = byte 2
  4442.     BH = byte 3
  4443.     CL = byte 1 (for all channel functions except 4Eh and 4Fh)
  4444.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  4445. Return: AH = status
  4446.         00h successful
  4447.         80h error
  4448.         FFh error
  4449. SeeAlso: AX=1646h,AH=18h"Digiboard"
  4450.  
  4451. (Table 0261)
  4452. Values for Digiboard CCB command number:
  4453.  40h    Set Receive Mid Water Mark
  4454.  41h    Set Receive High Water Mark
  4455.  42h    Flush Receive Buffer
  4456.  43h    Flush Transmit Buffer
  4457.  44h    Transmit Pause
  4458.  45h    Transmit Resume
  4459.  46h    Set Interrupt to Host Mask
  4460.  47h    Set Baud, Data, Stop and Parity
  4461.  48h    Send Break
  4462.  49h    Set Modem Lines
  4463.  4Ah    Set Break Count
  4464.  4Bh    Set Handshake
  4465.  4Ch    Set Xon/Xoff Characters
  4466.  4Dh    Set Transmit Mid Water Mark
  4467.  4Eh    IRQ Polling Timer to Host
  4468.  4Fh    Buffer Set All
  4469.  50h    Port On
  4470.  51h    Port Off
  4471.  52h    Receive Pause
  4472.  53h    Special Character Interrupt
  4473.  54h    RS-422 Enable
  4474. --------S-141646-----------------------------
  4475. INT 14 - Digiboard - CCB COMMAND - SET INTERRUPT TO HOST MASK
  4476.     AX = 1646h
  4477.     BL = bits to set
  4478.     BH = bits to clear
  4479.     CL = byte 1
  4480.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  4481. Return: AH = status
  4482.         00h successful
  4483.         80h error
  4484.         FFh error
  4485. SeeAlso: AH=16h"Digiboard",AX=1647h
  4486. --------S-141647-----------------------------
  4487. INT 14 - Digiboard - CCB COMMAND - SET BAUD/DATABITS/STOPBITS/PARITY
  4488.     AX = 1647h
  4489.     BL = baud
  4490.     BH = datatype
  4491.     CL = byte 1
  4492.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  4493. Return: AH = status
  4494.         00h successful
  4495.         80h error
  4496.         FFh error
  4497. SeeAlso: AH=16h"Digiboard",AX=1646h,AX=1649h
  4498. --------S-141649-----------------------------
  4499. INT 14 - Digiboard - CCB COMMAND - SET MODEM LINES
  4500.     AX = 1649h
  4501.     BL = bits to set
  4502.     BH = bits to clear
  4503.     CL = byte 1
  4504.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  4505. Return: AH = status
  4506.         00h successful
  4507.         80h error
  4508.         FFh error
  4509. SeeAlso: AH=16h"Digiboard",AX=1647h
  4510. --------S-14164A-----------------------------
  4511. INT 14 - Digiboard - CCB COMMAND - SET BREAK COUNT
  4512.     AX = 164Ah
  4513.     BL = break count
  4514.     CL = byte 1
  4515.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  4516. Return: AH = status
  4517.         00h successful
  4518.         80h error
  4519.         FFh error
  4520. SeeAlso: AH=16h"Digiboard",AX=1649h,AX=164Bh
  4521. --------S-14164B-----------------------------
  4522. INT 14 - Digiboard - CCB COMMAND - SET HANDSHAKE
  4523.     AX = 164Bh
  4524.     BL = bits to set
  4525.     BH = bits to clear
  4526.     CL = byte 1
  4527.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  4528. Return: AH = status
  4529.         00h successful
  4530.         80h error
  4531.         FFh error
  4532. SeeAlso: AH=16h"Digiboard",AX=1649h,AX=164Ch
  4533. --------S-14164C-----------------------------
  4534. INT 14 - Digiboard - CCB COMMAND - SET XON/XOFF CHARACTERS
  4535.     AX = 164Ch
  4536.     BL = XON character
  4537.     BH = XOFF character
  4538.     CL = byte 1
  4539.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  4540. Return: AH = status
  4541.         00h successful
  4542.         80h error
  4543.         FFh error
  4544. SeeAlso: AH=16h"Digiboard",AX=164Bh,AX=164Dh
  4545. --------S-14164D-----------------------------
  4546. INT 14 - Digiboard - CCB COMMAND - SET TRANSMIT MID-WATER MARK
  4547.     AX = 164Dh
  4548.     BX = new mid-water mark
  4549.     CL = byte 1
  4550.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  4551. Return: AH = status
  4552.         00h successful
  4553.         80h error
  4554.         FFh error
  4555. SeeAlso: AH=16h"Digiboard",AX=164Ch,AX=164Eh,AX=164Fh
  4556. --------S-14164E-----------------------------
  4557. INT 14 - Digiboard - CCB COMMAND - IRQ POLLING TIMER TO HOST
  4558.     AX = 164Eh
  4559.     BL = ticks
  4560.     BH = ???
  4561.     CL = mode
  4562.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  4563. Return: AH = status
  4564.         00h successful
  4565.         80h error
  4566.         FFh error
  4567. SeeAlso: AH=16h"Digiboard",AX=164Dh
  4568. --------S-14164F-----------------------------
  4569. INT 14 - Digiboard - CCB COMMAND - BUFFER SET ALL
  4570.     AX = 164Fh
  4571.     BL = size
  4572.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  4573. Return: AH = status
  4574.         00h successful
  4575.         80h error
  4576.         FFh error
  4577. SeeAlso: AH=16h"Digiboard",AX=164Dh
  4578. --------S-141653-----------------------------
  4579. INT 14 - Digiboard - CCB COMMAND - SPECIAL CHARACTER INTERRUPT
  4580.     AX = 1653h
  4581.     BL = enable/disable
  4582.     BH = special character
  4583.     CL = byte 1
  4584.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  4585. Return: AH = status
  4586.         00h successful
  4587.         80h error
  4588.         FFh error
  4589. SeeAlso: AH=16h"Digiboard",AX=1646h
  4590. --------S-1417-------------------------------
  4591. INT 14 - FOSSIL - REBOOT SYSTEM
  4592.     AH = 17h
  4593.     AL = method
  4594.         00h = cold boot
  4595.         01h = warm boot
  4596. SeeAlso: INT 16/AX=E0FFh,INT 19,INT 60/DI=0606h
  4597. --------S-1417-------------------------------
  4598. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - WRITE MODEM CONTROL REGISTER
  4599.     AH = 17h
  4600.     AL = new value for UART's modem control register
  4601.     DX = port number
  4602. Return: nothing
  4603. --------S-1418-------------------------------
  4604. INT 14 - FOSSIL - READ BLOCK
  4605.     AH = 18h
  4606.     CX = maximum number of characters to transfer
  4607.     DX = port number
  4608.     ES:DI -> user buffer
  4609. Return: AX = number of characters transferred
  4610. SeeAlso: AH=19h"FOSSIL",AH=83h"COURIERS",AX=FF02h,INT 6B/AX=0100h
  4611. --------S-1418-------------------------------
  4612. INT 14 - Digiboard DigiCHANNEL PC/X* - SEND BIOS COMMAND
  4613.     AH = 18h
  4614.     ES:BX -> 16-byte command string
  4615.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  4616. Return: AH = status
  4617.         00h successful
  4618.         80h timeout
  4619.     AL = mailbox status
  4620.         00h no errors
  4621.         8Xh BIOS error
  4622.     ES:BX buffer filled in with mailbox string
  4623.     ZF clear if no errors
  4624.     ZF set if either status byte contains an error code
  4625. SeeAlso: AH=16h"Digiboard"
  4626. --------S-1418-------------------------------
  4627. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - GET DRIVER DESCRIPTION
  4628.     AH = 18h
  4629.     DX = port number
  4630. Return: DS:BX -> 40-byte buffer containing a string identifying the serial
  4631.         driver
  4632. SeeAlso: AH=06h"PC-MOS"
  4633. --------S-1419-------------------------------
  4634. INT 14 - FOSSIL - WRITE BLOCK
  4635.     AH = 19h
  4636.     CX = maximum number of characters to transfer
  4637.     DX = port number
  4638.     ES:DI -> user buffer
  4639. Return: AX = number of characters transferred
  4640. SeeAlso: AH=18h"FOSSIL",AH=86h,INT 6B/AX=0000h
  4641. --------S-1419-------------------------------
  4642. INT 14 - Digiboard DigiCHANNEL PC/X* - SPECIAL CHARACTER INTERRUPT
  4643.     AH = 19h
  4644.     BL = flag
  4645.         00h disable special character interrupt
  4646.         FFh enable interrupt
  4647.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  4648. Return: AH = status
  4649.         00h successful
  4650.         FFh failed
  4651. SeeAlso: AH=1Ah"Digiboard"
  4652. --------S-1419-------------------------------
  4653. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - SELECTIVE BUFFER FLUSH
  4654.     AH = 19h
  4655.     AL = what to flush
  4656.         bit 0: input buffer
  4657.         bit 1: output buffer
  4658.     DX = port number
  4659. Return: nothing
  4660. SeeAlso: AH=09h"PC-MOS"
  4661. --------S-141A-------------------------------
  4662. INT 14 - FOSSIL - BREAK BEGIN OR END
  4663.     AH = 1Ah
  4664.     AL = 00h stop sending 'break'
  4665.          01h start sending 'break'
  4666.     DX = port number
  4667. Return: nothing
  4668. SeeAlso: AH=06h"FOSSIL",AH=8Ah,AH=FAh
  4669. --------S-141A-------------------------------
  4670. INT 14 - Digiboard DigiCHANNEL PC/X - SPECIAL CHARACTER FLAG/COUNTER
  4671.     AH = 1Ah
  4672.     BX = subfunction
  4673.         00h return pointer to special character flag byte
  4674.         01h return pointer to special character counter word
  4675.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  4676. Return: ES:BX -> special character flag or counter
  4677. Notes:    flag is FFh if one or more special characters are in the receive
  4678.       buffer; it is 00h and the counter is invalid if no special characters
  4679.       are in the receive buffer
  4680.     counter (if valid) contains the number of characters in the receive
  4681.       buffer up to and including the last-received special character
  4682. --------S-141B-------------------------------
  4683. INT 14 - FOSSIL - RETURN INFORMATION ABOUT THE DRIVER
  4684.     AH = 1Bh
  4685.     DX = port number
  4686.     CX = size of user buffer
  4687.     ES:DI -> user buffer for driver info (see #0262)
  4688. Return: AX = number of characters transferred
  4689.     CX = 3058h ("0X") (X00 FOSSIL only)
  4690.     DX = 2030h (" 0") (X00 FOSSIL only)
  4691.  
  4692. Format of FOSSIL driver info:
  4693. Offset    Size    Description    (Table 0262)
  4694.  00h    WORD    size of structure in bytes
  4695.  02h    BYTE    FOSSIL spec driver conforms to
  4696.  03h    BYTE    revision level of this specific driver
  4697.  04h    DWORD    pointer to ASCIZ identification string
  4698.  08h    WORD    size of the input buffer
  4699.  0Ah    WORD    number of bytes left in buffer
  4700.  0Ch    WORD    size of the output buffer
  4701.  0Eh    WORD    number of bytes left in buffer
  4702.  10h    BYTE    width of screen
  4703.  11h    BYTE    length of screen
  4704.  12h    BYTE    actual baud rate, computer to modem
  4705. --------S-141C-------------------------------
  4706. INT 14 - X00 FOSSIL - ACTIVATE PORT
  4707.     AH = 1Ch
  4708.     DX = port number
  4709. Return: AX = 1954h if successful
  4710.     BL = maximum function number supported (not including 7Eh and above)
  4711.     BH = revision of FOSSIL specification supported
  4712. Note:    this is a duplicate of AH=04h, so that AH=04h may be made compatible
  4713.       with the PS/2 BIOS in a future release
  4714. SeeAlso: AH=04h"FOSSIL",AH=1Dh
  4715. --------S-141D-------------------------------
  4716. INT 14 - X00 FOSSIL - DEACTIVATE PORT
  4717.     AH = 1Dh
  4718.     DX = port number
  4719. Return: none
  4720. Notes:    this is a duplicate of AH=05h, so that AH=05h may be made compatible
  4721.       with the PS/2 BIOS in a future release
  4722.     ignored if the port was never activated with AH=04h or AH=1Ch
  4723. SeeAlso: AH=05h"FOSSIL",AH=1Ch
  4724. --------S-141E-------------------------------
  4725. INT 14 - X00 FOSSIL - EXTENDED LINE CONTROL INITIALIZATION
  4726.     AH = 1Eh
  4727.     AL = break status
  4728.         00h if break
  4729.         01h if no break
  4730.     BH = parity (see #0263)
  4731.     BL = number of stop bits
  4732.         00h one stop bit
  4733.         01h two stop bits (1.5 if 5 bit word length)
  4734.     CH = word length (see #0264)
  4735.     CL = bps rate (see #0265)
  4736.     DX = port number
  4737. Return: AX = port status code (see #0223,#0224)
  4738. Notes:    this function is intended to exactly emulate the PS/2 BIOS AH=04h call
  4739.     if the port was locked at X00 load time, the appropriate parameters are
  4740.       ignored
  4741. SeeAlso: AH=00h,AH=04h"SERIAL"
  4742.  
  4743. (Table 0263)
  4744. Values for X00 FOSSIL parity:
  4745.  00h    no parity
  4746.  01h    odd parity
  4747.  02h    even parity
  4748.  03h    stick parity odd
  4749.  04h    stick parity even
  4750. SeeAlso: #0226,#0264,#0265
  4751.  
  4752. (Table 0264)
  4753. Values for X00 FOSSIL word length:
  4754.  00h    5 bits
  4755.  01h    6 bits
  4756.  02h    7 bits
  4757.  03h    8 bits
  4758. SeeAlso: #0227,#0263,#0265
  4759.  
  4760. (Table 0265)
  4761. Values for X00 FOSSIL bps rate:
  4762.  00h    110
  4763.  01h    150
  4764.  02h    300
  4765.  03h    600
  4766.  04h    1200
  4767.  05h    2400
  4768.  06h    4800
  4769.  07h    9600
  4770.  08h    19200
  4771. SeeAlso: #0228,#0263,#0264
  4772. --------S-141E------------------------------------
  4773. INT 14 - HUNTER 16 - READ COMMS PARAMETERS
  4774.     AH = 1Eh
  4775.     CX = channel number (00h COM1, 01h COM2, ...)
  4776.     DS:BX -> buffer for communications parameters (see #0266)
  4777. Return: DS:BX buffer filled
  4778. Note:    the Husky Hunter 16 is an 8088-based ruggedized laptop.     Other family
  4779.       members are the Husky Hunter, Husky Hunter 16/80, and Husky Hawk.
  4780. SeeAlso: AH=20h"HUNTER"
  4781.  
  4782. Format of HUNTER 16 communications parameters:
  4783. Offset    Size    Description    (Table 0266)
  4784.  00h    BYTE    communications type (00h IBM, nonzero Husky)
  4785.  01h    BYTE    port number (00h COM1, 01h COM2)
  4786.  02h    BYTE    baud rate (00h 110 bps, 01h 150, 02h 300, 03h 600, 04h 1200,
  4787.           05h 2400, 06h 4800, 07h 9600, 08h 19200, 09h 38400)
  4788.  03h    BYTE    data bits (01h seven, 02h eight)
  4789.  04h    BYTE    parity (00h none, 01h odd, 02h even)
  4790.  05h    BYTE    stop bits (00h one, 01h two)
  4791.  06h    BYTE    handshake (see #0267)
  4792.  07h    BYTE    handshake protocol (00h none, 01h Xon/Xoff, 02h HWK3780)
  4793.  08h    BYTE    Nulls after CR (0-20)
  4794.  09h    BYTE    LF (00h off, 01h on)
  4795.  0Ah    BYTE    Serig. 0..7Fh: Ignore this character
  4796.                80h: Serig off
  4797.  0Bh    BYTE    echo (00h off, 01h on)
  4798.  0Ch    BYTE    transmit timeout in seconds (1-60) or 00h to disable
  4799.  0Dh    BYTE    receive timeout in seconds (1-60) or 00h to disable
  4800.  0Eh  5 BYTEs    reserved
  4801.  
  4802. Bitfields for HUNTER 16 handshake:
  4803. Bit(s)    Description    (Table 0267)
  4804.  0-1    0: RTS off, 1: RTS hold, 2: RTS true
  4805.  2    DTR enabled
  4806.  4    CTS enabled
  4807.  5    DSR enabled
  4808.  6    DCD enabled
  4809. --------S-141F-------------------------------
  4810. INT 14 - X00 FOSSIL - EXTENDED SERIAL PORT STATUS/CONTROL
  4811.     AH = 1Fh
  4812.     DX = port number
  4813.     AL = direction
  4814.         00h read modem control register
  4815.         Return: BL = modem control register (see #0268)
  4816.             AH = status
  4817.         01h write modem control register
  4818.         BL = modem control register (see #0268)
  4819.         Return: AX = status
  4820. Notes:    this function is intended to exactly emulate the PS/2 BIOS AH=05h call
  4821.     X00 forces BL bit 3 set (interrupts cannot be disabled)
  4822. SeeAlso: AH=00h,AH=05h"SERIAL"
  4823.  
  4824. Bitfields for X00 FOSSIL modem control register:
  4825. Bit(s)    Description    (Table 0268)
  4826.  0    data terminal ready
  4827.  1    request to send
  4828.  2    OUT1
  4829.  3    OUT2 (interrupts) enabled
  4830.  4    LOOP
  4831.  5-7    reserved
  4832. --------S-1420-------------------------------
  4833. INT 14 - X00 FOSSIL - DESTRUCTIVE READ WITH NO WAIT
  4834.     AH = 20h
  4835.     DX = port number
  4836. Return: AH = 00h if character was available
  4837.         AL = next character (removed from receive buffer)
  4838.     AX = FFFFh if no character available
  4839. SeeAlso: AH=0Ch,AH=21h"X00"
  4840. --------S-1420-------------------------------
  4841. INT 14 - Alloy MW386 - ATTACH LOGICAL COMMUNICATIONS PORT TO PHYSICAL PORT
  4842.     AH = 20h
  4843.     AL = logical port (01h COM1, 02h COM2)
  4844.     DX = physical port number
  4845. Return: AX = status
  4846.         0000h successful
  4847.         FFFFh failed
  4848. SeeAlso: AH=21h"Alloy",AH=22h"Alloy",AH=23h"Alloy",INT 17/AH=8Bh"Alloy"
  4849. --------S-1420-------------------------------
  4850. INT 14 - MultiDOS Plus - INITIALIZE PORT
  4851.     AH = 20h
  4852.     AL = port parameters (see #0219 at AH=00h"SERIAL")
  4853.     DX = port number (0-3)
  4854. Return: AH = status
  4855.         00h successful
  4856.         41h no such port
  4857.         64h monitor mode already active
  4858. SeeAlso: AH=00h"SERIAL",AH=04h"MultiDOS",AH=21h"MultiDOS",AH=23h"MultiDOS"
  4859. --------S-1420-------------------------------
  4860. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - CHECK OUTPUT QUEUE
  4861.     AH = 20h
  4862.     DX = port number
  4863. Return: AX = number of bytes in output buffer
  4864. SeeAlso: AH=0Ah"Digiboard"
  4865. --------S-1420------------------------------------
  4866. INT 14 - HUNTER 16 - SELECT COMMS PARAMETERS
  4867.     AH = 20h
  4868.     CX = channel number (00h COM1, 01h COM2, ...)
  4869.     DS:BX -> buffer with communications parameter (see #0266)
  4870. Return: AX = status
  4871.         0000h successful
  4872.         0001h invalid parameter
  4873. SeeAlso: AH=1Eh"HUNTER",AH=21h"HUNTER"
  4874. --------S-1421-------------------------------
  4875. INT 14 - X00 FOSSIL - STUFF RECEIVE BUFFER
  4876.     AH = 21h
  4877.     AL = character
  4878.     DX = port number
  4879. Return: nothing
  4880. Notes:    the given character is inserted at the end of the receive buffer as if
  4881.       it had just arrived from the serial port; all normal receive
  4882.       processing (XON/XOFF, ^C/^K) is performed on the character
  4883.     fully re-entrant
  4884. SeeAlso: AH=20h"X00"
  4885. --------S-1421-------------------------------
  4886. INT 14 - Alloy MW386 v1.x only - RELEASE PHYSICAL COMMUNICATIONS PORT
  4887.     AH = 21h
  4888.     DX = physical port number
  4889. Return: AX = status
  4890.         0000h successful
  4891.         FFFFh failed
  4892. SeeAlso: AH=20h"Alloy",AH=22h"Alloy"
  4893. --------S-1421-------------------------------
  4894. INT 14 - MultiDOS Plus - TRANSMIT CHARACTER
  4895.     AH = 21h
  4896.     AL = character to send
  4897.     DX = port number
  4898. Return: AH = status (see #0269)
  4899. Note:    monitor mode must have been turned on with AH=24h before calling
  4900. SeeAlso: AH=20h"MultiDOS",AH=22h"MultiDOS",AH=24h"MultiDOS"
  4901.  
  4902. (Table 0269)
  4903. Values for MultiDOS Plus status:
  4904.  00h    successful
  4905.  39h    no DSR or CTS
  4906.  3Ch    no DSR
  4907.  3Bh    no CTS
  4908.  41h    no such port
  4909.  42h    monitor mode not active
  4910.  97h    timed out
  4911. --------S-1421-------------------------------
  4912. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - OUTPUT CHARACTER, WITH TIMEOUT
  4913.     AH = 21h
  4914.     AL = char to send
  4915.     DX = port number
  4916.     SI = timeout in timer ticks (0000h = default)
  4917. Return: after character is sent or timeout expires
  4918. Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible
  4919.       operating system by The Software Link, Inc.
  4920. SeeAlso: AH=01h,AH=0Eh"Digiboard",AH=22h"PC-MOS"
  4921. --------S-1421------------------------------------
  4922. INT 14 - HUNTER 16 - EXTENDED CONTROL
  4923.     AH = 21h
  4924.     AL = command
  4925.         01h force transmission of buffer
  4926.         02h clear transmit buffer
  4927.         03h clear receive buffer
  4928.     DX = port (00h COM1, 01h COM2)
  4929. Return: AH = extended status
  4930. Desc:    executes the command on the selected port
  4931. SeeAlso: AH=1Eh"HUNTER",AH=20h"HUNTER",AH=22h"HUNTER",AH=24h"HUNTER"
  4932. --------S-1422-------------------------------
  4933. INT 14 - Alloy MW386 v2+ - RELEASE LOGICAL COMMUNICATIONS PORT
  4934.     AH = 22h
  4935.     AL = logical port (01h COM1, 02h COM2)
  4936. Return: AX = status (0000h successful)
  4937. SeeAlso: AH=20h"Alloy",AH=21h"Alloy"
  4938. --------S-1422-------------------------------
  4939. INT 14 - MultiDOS Plus - RECEIVE CHARACTER
  4940.     AH = 22h
  4941.     DX = port number
  4942. Return: AH = status (see also AH=21h"MultiDOS")
  4943.         00h successful
  4944.         AL = character
  4945.         3Dh framing and parity error
  4946.         3Eh overrun error
  4947.         3Fh framing error
  4948.         40h parity error
  4949.         96h ring buffer overflow
  4950. Note:    if no character is available, this function waits until a character
  4951.       arrives or an implementation-dependent timeout elapses
  4952. SeeAlso: AH=20h"MultiDOS",AH=21h"MultiDOS",AH=27h
  4953. --------S-1422-------------------------------
  4954. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - RECEIVE CHARACTER, WITH TIMEOUT
  4955.     AH = 22h
  4956.     DX = port number
  4957.     SI = timeout in timer ticks (0000h = default)
  4958. Return: AH = port status (see also #0223 at AH=03h)
  4959.          bit 7 = 1 indicates time-out
  4960.     AL = character received
  4961. Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible
  4962.       operating system by The Software Link, Inc.
  4963. SeeAlso: AH=02h,AH=0Fh"Digiboard",AH=21h"PC-MOS"
  4964. --------S-1422------------------------------------
  4965. INT 14 - HUNTER 16 - EXTENDED STATUS
  4966.     AH = 22h
  4967.     DX = port (00h COM1, 01h COM2)
  4968. Return: AH = extended status
  4969.     BX = number of characters in input buffer
  4970.     CX = number of characters in output buffer
  4971. Desc:    returns the most recent Extended Status code for the port
  4972. SeeAlso: AH=21h"HUNTER"
  4973. --------S-1423-------------------------------
  4974. INT 14 - Alloy MW386 v2+ - GET PORT NUMBER FROM LOGICAL PORT ID
  4975.     AH = 23h
  4976.     AL = logical port (01h COM1, 02h COM2)
  4977.     DH = user ID
  4978.     DL = process ID (DH,DL both FFh for current task)
  4979. Return: AL = MW386 port mode (see #0270)
  4980.     CX = MW386 port number
  4981.     DH = owner's user ID
  4982.     DL = owner's task ID
  4983. SeeAlso: AH=20h"Alloy",INT 17/AH=8Bh"Alloy"
  4984.  
  4985. Bitfields for MW386 port mode:
  4986. Bit(s)    Description    (Table 0270)
  4987.  0    port is shared (spooler only)
  4988.  1    port is spooled instead of direct (spooler only)
  4989.  2    port is assigned as logical COM device, not in spooler
  4990.  3    port is free
  4991. --------S-1423-------------------------------
  4992. INT 14 - MultiDOS Plus - GET PORT STATUS
  4993.     AH = 23h
  4994.     DX = port number
  4995. Return: AH = line status (see #0223 at AH=03h)
  4996.     AL = modem status (see #0224 at AH=03h)
  4997. SeeAlso: AH=03h,AH=07h"MultiDOS",AH=20h"MultiDOS"
  4998. --------S-1423-------------------------------
  4999. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - DECLARE PORT OWNERSHIP
  5000.     AH = 23h
  5001.     DX = port number
  5002.     BX = TCB segment/selector address of owner task
  5003. Return: nothing
  5004. SeeAlso: AH=0Dh"Digiboard",AH=21h"PC-MOS",AH=22h"PC-MOS"
  5005. --------S-1423------------------------------------
  5006. INT 14 - HUNTER 16 - CONTROL HANDSHAKE LINES
  5007.     AH = 23h
  5008.     BH = handshake line to set (00h RTS, 01h DTR)
  5009.     BL = new level (00h low, 01h high)
  5010. Return: nothing
  5011. Desc:    sets the handshake lines of COM1 to the desired level
  5012. SeeAlso: AH=21h"HUNTER",AH=24h"HUNTER"
  5013. --------S-1424-------------------------------
  5014. INT 14 - Alloy MW386 v2+ - CHANGE PHYSICAL PORT PARAMETERS
  5015.     AH = 24h
  5016.     CX = physical I/O port number
  5017.     DS:DX -> configuration table (see #0271)
  5018. Return: AH = 00h
  5019. Note:    invalid port numbers are merely ignored
  5020. SeeAlso: INT 17/AH=96h
  5021.  
  5022. Format of Alloy MW386 configuration table:
  5023. Offset    Size    Description    (Table 0271)
  5024.  00h    BYTE    baud rate (see #0272)
  5025.  01h    BYTE    data bits (00h=5, 01h=6, 02h=7, 03h=8)
  5026.  02h    BYTE    parity (00h none, 01h odd, 02h even)
  5027.  03h    BYTE    stop bits (00h=1, 01h=2)
  5028.  04h    BYTE    receive flow control
  5029.         00h none, 01h XON/XOFF, 02h DTR/DSR, 03h XPC, 04h RTS/CTS
  5030.  05h    BYTE    transmit flow control (as for receive)
  5031.  
  5032. (Table 0272)
  5033. Values for Alloy MW386 baud rate:
  5034.  00h    38400
  5035.  01h    19200
  5036.  02h    9600
  5037.  03h    7200
  5038.  04h    4800
  5039.  05h    3600
  5040.  06h    2400
  5041.  07h    2000
  5042.  08h    1200
  5043.  09h    600
  5044.  0Ah    300
  5045.  0Bh    150
  5046.  0Ch    134.5
  5047. SeeAlso: #0228
  5048. --------S-1424-------------------------------
  5049. INT 14 - MultiDOS Plus - SET MONITOR MODE
  5050.     AH = 24h
  5051.     AL = port status storage
  5052.         00h single status for entire receive buffer
  5053.         01h separate status kept for each byte in receive buffer
  5054.     DX = port number
  5055. Return: AH = status
  5056.         00h successful
  5057.         3Ah invalid status storage specified
  5058.         41h no such port
  5059.         64h monitor mode already active
  5060. Note:    in monitor mode, MultiDOS redirects all BIOS video output to a serial
  5061.       port
  5062. SeeAlso: AH=20h"MultiDOS",AH=25h
  5063. --------S-1424-------------------------------
  5064. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - ???
  5065.     AH = 24h
  5066. Return: ???
  5067. Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible
  5068.       operating system by The Software Link, Inc.
  5069. --------S-1424------------------------------------
  5070. INT 14 - HUNTER 16 - CONTROL CTS HANDSHAKING
  5071.     AH = 24h
  5072.     AL = new CTS handshake state for COM1 (00h disabled, 01h enabled)
  5073. Return: nothing
  5074. SeeAlso: AH=23h"HUNTER",AH=25h"HUNTER",AH=26h"HUNTER"
  5075. --------S-1425-------------------------------
  5076. INT 14 - MultiDOS Plus - CLEAR BUFFERS
  5077.     AH = 25h
  5078.     AL = function
  5079.         00h only clear buffers
  5080.         01h clear buffers and deactivate
  5081.     DX = port number
  5082. Return: AH = status
  5083.         00h successful
  5084.         3Ah invalid function
  5085.         41h no such port
  5086.         42h monitor mode not active
  5087. SeeAlso: AH=20h"MultiDOS",AH=24h"MultiDOS"
  5088. --------S-1425------------------------------------
  5089. INT 14 - HUNTER 16 - CONTROL RS232 DRIVERS
  5090.     AH = 25h
  5091.     AL = new state of RS232 drivers (00h off, 01h on)
  5092. Return: nothing
  5093. Note:    this function can be used to save power by turning off the RS232
  5094.       drivers.  It can also be used to turn on the RS232 drivers before
  5095.       connecting to a remote system to avoid "garbage" while the drivers
  5096.       turn on.
  5097. SeeAlso: AH=23h"HUNTER",AH=24h"HUNTER",AH=26h"HUNTER"
  5098. --------S-1426------------------------------------
  5099. INT 14 - HUNTER 16 - CONTROL RI POWER UP
  5100.     AH = 26h
  5101.     AL = 00h enable RI power up
  5102.         else disable RI power up
  5103. Return: nothing
  5104. Desc:    control whether the Ring Indicator handshake can power up the Hunter
  5105. --------S-1427-------------------------------
  5106. INT 14 - MultiDOS Plus - GET BUFFER CHARACTER COUNT
  5107.     AH = 27h
  5108.     DX = port number
  5109. Return: AH = status
  5110.         00h successful
  5111.         41h no such port
  5112.         42h monitor mode not active
  5113.     AL = number of characters in receive buffer
  5114. --------S-1427------------------------------------
  5115. INT 14 - HUNTER 16 - GET INSTALLED PROTOCOLS COUNT
  5116.     AH = 27h
  5117.     AL = number of extended protocols installed (since last call)
  5118. Return: AL = total number installed, including new ones
  5119. Desc:    Returns the number of extended communication protocols installed
  5120. SeeAlso: AH=25h"HUNTER",AH=28h"HUNTER"
  5121. --------S-1428------------------------------------
  5122. INT 14 - HUNTER 16 - GET PROTOCOL NAME
  5123.     AH = 28h
  5124.     AL = protocol handle
  5125.     DS:BX -> 8 character buffer for protocol name
  5126. Return: AH = status
  5127.         00h successful
  5128.         DS:BX buffer filled with the protocol name
  5129.         FFh failed
  5130. SeeAlso: AH=27h"HUNTER",AH=29h"HUNTER"
  5131. --------S-1429------------------------------------
  5132. INT 14 - HUNTER 16 - GET PROTOCOL HANDLE
  5133.     AH = 29h
  5134.     DS:BX -> buffer containing the protocol name
  5135. Return: AH = status
  5136.         00h successful
  5137.         AL = handle
  5138.         FFh failed
  5139. SeeAlso: AH=28h"HUNTER",AH=2Ah"HUNTER"
  5140. --------S-142A------------------------------------
  5141. INT 14 - HUNTER 16 - EXTENDED PROTOCOL MENU
  5142.     AH = 2Ah
  5143.     AL = protocol handle
  5144. Return: AH = status
  5145.         00h successful
  5146.         FFh failed
  5147.     AL = menu handle
  5148. SeeAlso: AH=29h"HUNTER",AH=2Bh"HUNTER"
  5149. --------S-142B------------------------------------
  5150. INT 14 - HUNTER 16 - GET EXTENDED PROTOCOL PARAMETERS
  5151.     AH = 2Bh
  5152.     AL = protocol handle
  5153.     DS:BX -> buffer for extended protocol parameters
  5154. Return: AH = status
  5155.         00h successful
  5156.         DS:BX buffer filled with extended parameters
  5157.         FFh failed
  5158. SeeAlso: AH=2Ah"HUNTER"
  5159. --------S-142C00----------------------------------
  5160. INT 14 - HUNTER 16 - GET DTR
  5161.     AX = 2C00h
  5162. Return: AH = 00h
  5163.     BL = current state
  5164.         00h     normal DTR operation
  5165.         else DTR is forced high
  5166. Desc:    Indicates whether the DTR signal on COM1 is forced high
  5167. Note:    the Husky Hunter 16 is an 8088-based ruggedized laptop.     Other family
  5168.       members are the Husky Hunter, Husky Hunter 16/80, and Husky Hawk.
  5169. SeeAlso: AH=2Ch"SET DTR"
  5170. --------S-142C------------------------------------
  5171. INT 14 - HUNTER 16 - SET DTR
  5172.     AH = 2Ch
  5173.     AL nonzero
  5174.     BL = new state
  5175.         00h     normal operation
  5176.         else force DTR high
  5177. Return: AH = 00h
  5178. Desc:    determine whether the DTR signal on COM1 should be forced high
  5179. SeeAlso: AX=2C00h
  5180. --------N-1436-------------------------------
  5181. INT 14 - ComShare - INSTALLATION CHECK
  5182.     AH = 36h
  5183. Return: AX = 4353h ('CS') if installed
  5184.         BX = bitmap of installed ports (bit 0: COM1 is gateway, etc.)
  5185.         CX reserved for future use
  5186.         WORD DX:[0100h] = ComShare version number
  5187. Program: The ComShare System is a modem-sharing program for NetBIOS and
  5188.       NetWare-based networks by NashaKala Corporation
  5189. Note:    ComShare supports the standard BIOS INT 14h calls with a slight
  5190.       change in the interpretation of speed values
  5191.       (see #0228 at AH=04h"SERIAL")
  5192. SeeAlso: AH=00h"SERIAL",AH=04h"SERIAL",AX=F4FFh
  5193. --------t-144000-----------------------------
  5194. INT 14 - I1541 - INSTALLATION CHECK
  5195.     AX = 4000h
  5196. Return: AX = 1541h if installed
  5197.         BH = I1541 major version (BCD)
  5198.         BL = I1541 minor version (BCD)
  5199.         CX = 0000h
  5200. --------t-144001-----------------------------
  5201. INT 14 - I1541 - TEST IF 1541 CABLE CONNECTED
  5202.     AX = 4001h
  5203. Return: CF clear if connected
  5204.         BL = LPT number where 1541 cable is connected (1..3)
  5205.     CF set if cable not connected
  5206. Desc:    scan all the LPT ports searching for the adapter cable
  5207. SeeAlso: AX=4000h
  5208. --------t-144002-----------------------------
  5209. INT 14 - I1541 - SELECT LPT PORT FOR OUTPUT
  5210.     AX = 4002h
  5211.     BL = LPT number (1..3)
  5212. Return: CF clear if successful
  5213.     CF set otherwise
  5214. Desc:    force the input output routines to work on the cable placed on LPT BL
  5215. SeeAlso: AX=4001h
  5216. --------t-144003-----------------------------
  5217. INT 14 - I1541 - RESET ALL DEVICES
  5218.     AX = 4003h
  5219. Return: nothing
  5220. Desc:    send a reset pulse of 100ms to all CBM devices
  5221. Note:    it is necessary to wait about 2 seconds after reset before executing
  5222.       other    instructions
  5223. SeeAlso: AX=4000h,AX=4004h
  5224. --------t-144004-----------------------------
  5225. INT 14 - I1541 - SEND LISTEN SIGNAL
  5226.     AX = 4004h
  5227.     BH = device number (0..15)
  5228. Return: CF clear if successful
  5229.     CF set on error
  5230.         AL = error number (see #0273)
  5231. SeeAlso: AX=4005h,AX=4006h
  5232.  
  5233. (Table 0273)
  5234. Values for I1541 error number:
  5235.  00h    device not present
  5236.  01h    listener not ready
  5237.  02h    missing EOI time-out
  5238.  03h    EOI not completed
  5239.  04h    data not released
  5240.  05h    frame error
  5241. --------t-144005-----------------------------
  5242. INT 14 - I1541 - SEND SECONDARY ADDRESS FOR LISTEN
  5243.     AX = 4005h
  5244.     BL = channel number and mode (see #0274)
  5245. Return: CF clear if successful
  5246.     CF set on error
  5247.         AL = error number (see #0273)
  5248. SeeAlso: AX=4004h,AX=4006h
  5249.  
  5250. Bitfields for I1541 channel number and mode:
  5251. Bit(s)    Description    (Table 0274)
  5252.  7-4    mode
  5253.     0110 read/write
  5254.     1110 close channel
  5255.     1111 open channel
  5256.  3-0    channel number
  5257. --------t-144006-----------------------------
  5258. INT 14 - I1541 - SEND UNLISTEN SIGNAL
  5259.     AX = 4006h
  5260. Return: CF clear if successful
  5261.     CF set on error
  5262.         AL = error number (see #0273)
  5263. SeeAlso: AX=4004h,AX=4005h
  5264. --------t-144007-----------------------------
  5265. INT 14 - I1541 - SEND TALK SIGNAL
  5266.     AX = 4007h
  5267.     BH = device number (0-15)
  5268. Return: CF clear if successful
  5269.     CF set on error
  5270.         AL = error number (see #0273)
  5271. SeeAlso: AX=4008h,AX=4009h
  5272. --------t-144008-----------------------------
  5273. INT 14 - I1541 - SEND SECONDARY ADDRESS FOR TALK
  5274.     AX = 4008h
  5275.     BL = channel number and mode (see #0274)
  5276. Return: CF clear if successful
  5277.     CF set on error
  5278.         AL = error number (see also #0273)
  5279.         40h turn around time-out
  5280. SeeAlso: AX=4007h,AX=4009h
  5281. --------t-144009-----------------------------
  5282. INT 14 - I1541 - SEND UNTALK SIGNAL
  5283.     AX = 4009h
  5284. Return: CF clear if successful
  5285.     CF set on error
  5286.        AL = error number (see #0273)
  5287. SeeAlso: AX=4007h,AX=4008h
  5288. --------t-14400A-----------------------------
  5289. INT 14 - I1541 - SEND A BYTE TO A DEVICE
  5290.     AX = 400Ah
  5291.     BL = byte to send
  5292.     CL = last-byte flag
  5293.         00h more bytes follow
  5294.         01h this is the last byte to be sent
  5295. Return: CF clear if successful
  5296.     CF set on error
  5297.         AL = error number (see #0273)
  5298. SeeAlso: AX=4000h,AX=400Bh
  5299. --------t-14400B-----------------------------
  5300. INT 14 - I1541 - RECEIVE A BYTE FROM A DEVICE
  5301.     AX = 400Bh
  5302. Return: CF clear if successful
  5303.         AL = byte received
  5304.         CL = last-byte flag
  5305.         00h more bytes to follow
  5306.         01h received byte is the last
  5307.     CF set on error
  5308.         AL = error number
  5309.         80h EOI response required
  5310.         81h talker not ready
  5311.         82h clock not set
  5312.         83h clock not released
  5313.         CL = 00h
  5314. SeeAlso: AX=4000h,AX=400Ah
  5315. --------t-14400C-----------------------------
  5316. INT 14 - I1541 - WAIT
  5317.     AX = 400Ch
  5318.     CX = number of 838ns microticks to wait (0000h means 65536, ~55ms)
  5319. Return: after wait period elapses
  5320. SeeAlso: AX=4000h,AX=400Dh
  5321. --------t-14400D-----------------------------
  5322. INT 14 - I1541 - LONGWAIT
  5323.     AX = 400Dh
  5324.     DX:CX = number of 838ns microticks to wait
  5325.           (0000h:0000h means 4294967296, about one hour)
  5326. Example: To wait 1s you must set DX:CX=(1s/838ns)=1193180
  5327. SeeAlso: AX=4000h,AX=400Ch
  5328. --------t-14400E-----------------------------
  5329. INT 14 - I1541 - GET INFO
  5330.     AX = 400Eh
  5331. Return: AX = LPT port I/O address in use (0000h if no cable in use)
  5332.     BL = LPT number (1..3) in use (00h if no cable in use)
  5333.     CF set if the cable is auto-detectable
  5334.     CF clear if cable could not be auto-detected or is not present
  5335. SeeAlso: AX=4000h
  5336. --------S-1456-------------------------------
  5337. INT 14 U - BWCOM14 - INSTALLATION CHECK
  5338.     AH = 56h
  5339. Return: CX = 0001h if installed
  5340. Program: BWCOM14 is a network serial port emulator (simulating a Hayes modem
  5341.       connected to the serial port) distributed as part of the
  5342.       Beame&Whiteside BW-NFS package
  5343. SeeAlso: AH=57h,AH=58h,INT 2F/AX=DF00h/BX=5445h
  5344. --------S-1457-------------------------------
  5345. INT 14 U - BWCOM14 - INITIALIZE
  5346.     AH = 57h
  5347.     DL = port number
  5348. Return: AL = initialization status (00h successful, 01h already initialized)
  5349.     CX = port status (0001h port redirected, 0002h and FFFFh failed)
  5350. Note:    after this call, all invocations of INT 14/AH=00h-03h for the specified
  5351.       port will be handled by BWCOM14 until AH=58h is called
  5352. SeeAlso: AH=00h"SERIAL",AH=56h,AH=58h
  5353. --------S-1458-------------------------------
  5354. INT 14 U - BWCOM14 - SHUTDOWN
  5355.     AH = 58h
  5356. Return: CX = status (0001h successful, 0002h not initialized)
  5357. Note:    after this call, BWCOM14 will no longer redirect the COM port
  5358. SeeAlso: AH=56h,AH=57h
  5359. --------N-146F--BXFFFE-----------------------
  5360. INT 14 U - Connection Manager - ???
  5361.     AH = 6Fh
  5362.     BX = FFFEh
  5363.     ???
  5364. Return: ???
  5365. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  5366.       serial ports over an IPX or NetBIOS-based network
  5367. --------N-146F--BXFFFF-----------------------
  5368. INT 14 - Connection Manager - INSTALLATION CHECK
  5369.     AH = 6Fh
  5370.     BX = FFFFh
  5371. Return: DX:BX -> Connection Manager Communication Table if installed
  5372.     BX = FFFFh if not installed
  5373. SeeAlso: AH=0Dh/DX=FFFFh
  5374. --------S-146F00-----------------------------
  5375. INT 14 - HP Vectra EX-BIOS - "F14_INQUIRE" - INSTALLATION CHECK
  5376.     AX = 6F00h
  5377.     BX <> 4850h (usually set to 0000h for simplicity)
  5378. Return: BX = 4850h ("HP") if HP Extended BIOS serial port extensions available
  5379.     AX destroyed
  5380. Note:    supported by original HP Vectra AT and by ES/QS/RS series Vectras
  5381. SeeAlso: AX=6F01h,AX=6F02h,AX=6F03h,AX=6F04h,INT 10/AX=6F00h,INT 14/AX=6F00h
  5382. SeeAlso: INT 17/AX=6F00h,INT 33/AX=6F00h
  5383. --------S-146F01-----------------------------
  5384. INT 14 - HP Vectra EX-BIOS - "F14_EXINIT" - INITIALIZE SERIAL PORT
  5385.     AX = 6F01h
  5386.     BX = port attributes (see #0275)
  5387.     DX = port number (0-3)
  5388. Return: AH = line status (see #0223)
  5389.     AL = modem status (see #0224)
  5390. Note:    supported by original HP Vectra AT and by ES/QS/RS series Vectras
  5391. SeeAlso: AX=6F00h
  5392.  
  5393. Bitfields for HP Vectra Extended BIOS serial port attributes:
  5394. Bit(s)    Description    (Table 0275)
  5395.  8-5    data rate (110, 150, 300, 600, 1200, 2400, 4800, 9600, 19200)
  5396.  4-3    parity
  5397.     00 none
  5398.     01 odd
  5399.     10 none
  5400.     11 even
  5401.  2    stop bits (0 = one, 1 = two)
  5402.  1-0    bits per character
  5403.     10 seven-bit characters
  5404.     11 eight-bit characters
  5405.     0x undefined
  5406. --------S-146F02-----------------------------
  5407. INT 14 - HP Vectra EX-BIOS - "F14_PUT_BUFFER" - TRANSMIT BUFFER
  5408.     AX = 6F02h
  5409.     CX = number of characters in buffer
  5410.     DX = port number (0-3)
  5411.     ES:DI -> buffer containing characters
  5412. Return: AH = line status (see #0223)
  5413.     AL = modem status (see #0224)
  5414.     CX = number of bytes actually sent
  5415.     ES:DI -> next byte to be transferred (unchanged if all bytes sent)
  5416. Desc:    send characters from the specified buffer until all characters have
  5417.       been sent or an error/timeout is encountered
  5418. Note:    supported by original HP Vectra AT and by ES/QS/RS series Vectras
  5419. SeeAlso: AX=6F00h,AX=6F03h,AX=6F04h,INT 17/AX=6F02h
  5420. --------S-146F03-----------------------------
  5421. INT 14 - HP Vectra EX-BIOS - "F14_GET_BUFFER" - READ DATA INTO BUFFER
  5422.     AX = 6F03h
  5423.     CX = size of buffer
  5424.     DX = port number (0-3)
  5425.     ES:DI -> buffer for received characters
  5426. Return: AH = line status (see #0223)
  5427.     ---on error (AH bit 7 set)---
  5428.        AL = 00h
  5429.        ES:DI -> next byte to be transferred
  5430.     ---if successful---
  5431.        AL = last byte read
  5432.        ES:DI unchanged
  5433.     CX = number of bytes read
  5434. Desc:    read characters into the specified buffer until the buffer is filled
  5435.       or a timeout occurs
  5436. Notes:    supported by original HP Vectra AT and by ES/QS/RS series Vectras
  5437.     polls the Data Set Ready modem status and Data Ready line status bits
  5438.       to determine when characters are available
  5439. SeeAlso: AX=6F00h,AX=6F02h,AX=6F04h
  5440. --------S-146F04-----------------------------
  5441. INT 14 - HP Vectra EX-BIOS - "F14_TRM_BUFFER" - READ UNTIL TERMINATOR
  5442.     AX = 6F04h
  5443.     BL = lowest termination character
  5444.     BH = highest termination character
  5445.     CX = size of buffer
  5446.     DX = port number (0-3)
  5447.     ES:DI -> buffer for received characters
  5448. Return: AH = line status (see #0223)
  5449.     ---on error (AH bit 7 set)---
  5450.        AL = 00h
  5451.        ES:DI -> next byte to be transferred
  5452.     ---if successful---
  5453.        AL = last byte read
  5454.        ES:DI unchanged
  5455.     CX = number of bytes read
  5456. Desc:    read characters into the specified buffer until the buffer is filled,
  5457.       a character in the specified range is received, or a timeout occurs
  5458. Notes:    supported by original HP Vectra AT and by ES/QS/RS series Vectras
  5459.     polls the Data Set Ready modem status and Data Ready line status bits
  5460.       to determine when characters are available
  5461. SeeAlso: AX=6F00h,AX=6F02h,AX=6F03h
  5462. --------S-147E-------------------------------
  5463. INT 14 - FOSSIL - INSTALL AN EXTERNAL APPLICATION FUNCTION
  5464.     AH = 7Eh
  5465.     AL = code assigned to external application (80h-BFh)
  5466.         80h reserved for communications FOSSIL
  5467.         81h video FOSSIL
  5468.         82h reserved for keyboard FOSSIL
  5469.         83h reserved for system FOSSIL
  5470.     ES:DX -> entry point
  5471. Return: AX = 1954h
  5472.     BL = code assigned to application (same as input AL)
  5473.     DH = 00h failed
  5474.          01h successful
  5475. SeeAlso: AH=7Fh,AH=80h"FOSSIL",AX=8100h,AH=82h"FOSSIL",AH=83h"FOSSIL"
  5476. --------S-147F-------------------------------
  5477. INT 14 - FOSSIL - REMOVE AN EXTERNAL APPLICATION FUNCTION
  5478.     AH = 7Fh
  5479.     AL = code assigned to external application
  5480.     ES:DX -> entry point
  5481. Return: AX = 1954h
  5482.     BL = code assigned to application (same as input AL)
  5483.     DH = 00h failed
  5484.          01h successful
  5485. SeeAlso: AH=7Eh
  5486. --------S-1480-------------------------------
  5487. INT 14 - COMMUNICATIONS FOSSIL
  5488.     AH = 80h
  5489. SeeAlso: AH=7Eh
  5490. --------S-1480-------------------------------
  5491. INT 14 - COURIERS.COM - INSTALLATION CHECK
  5492.     AH = 80h
  5493. Return: AH = E8h if loaded
  5494. Program: COURIERS is a TSR utility by PC Magazine
  5495. --------S-148000-----------------------------
  5496. INT 14 - ARTICOM - INSTALLATION CHECK
  5497.     AX = 8000h
  5498. Return: AL = FFh if installed
  5499.         BH = major version
  5500.         BL = minor version
  5501. Program: ArtiCom is an asynchronous communications driver by Artisoft which
  5502.       works on top of NetBIOS and allows modem/serial-port sharing by
  5503.       programs using INT 14 for serial I/O.
  5504. Note:    ArtiCom supports 32 simultaneous COM ports using multiport cards and
  5505.       drivers
  5506. SeeAlso: AH=00h"SERIAL",AH=01h,AH=02h,AH=03h,AH=04h"SERIAL",AH=05h"SERIAL"
  5507. SeeAlso: AX=8001h,AX=8002h
  5508. --------S-148000-----------------------------
  5509. INT 14 - COMM-DRV v14.0 - READ PORT METRICS - GET ERROR CODE AND BUFFER STATUS
  5510.     AX = 8000h
  5511.     DX = port number
  5512. Return: AX = code for last error (see #0276)
  5513.     BX = number of characters in output buffer
  5514.     CX = nubmer of characters in input buffer
  5515.     DX = state flag (see #0277)
  5516. Program: COMM-DRV is a universal serial communications driver by Willies'
  5517.       Computer Software Company, which supports standard INT 14 and
  5518.       FOSSIL calls as well as its own interfaces
  5519. SeeAlso: AX=8001h"COMM-DRV",AX=8002h"COMM-DRV",AX=8003h"COMM-DRV"
  5520.  
  5521. (Table 0276)
  5522. Values for COMM-DRV error code:
  5523.  00h    no error
  5524.  01h    buffer not set or attempted to change buffer for active port
  5525.  02h    port not active
  5526.  03h    transmit buffer full
  5527.  04h    receive buffer full
  5528.  05h    syntax error
  5529.  06h    invalid buffer size
  5530.  07h    invalid port
  5531.  08h    handler changed
  5532.  09h    invalid baud rate
  5533.  0Ah    invalid parity setting
  5534.  0Bh    invalid data length
  5535.  0Ch    invalid number of stop bits
  5536.  0Dh    invalid protocol number
  5537.  0Eh    IRQ changed
  5538.  0Fh    port changged
  5539.  10h    invalid threshold setting
  5540.  11h    invalid IRQ number
  5541.  12h    interrupts not enabled
  5542.  13h    invalid break syntax
  5543.  14h    fatal error
  5544.  15h    CTS error
  5545.  16h    invalid RS232 I/O port address
  5546.  17h    environment variable not set
  5547.  18h    error on IOCTL call
  5548.  19h    error during atexit cleanup
  5549.  1Ah    error mapping for direct calls
  5550.  1Bh    error opening device
  5551.  1Ch    unable to allocate memory
  5552.  1Dh    error on external micro card
  5553.  1Eh    card changed error
  5554.  1Fh    card type error
  5555.  20h    not supported
  5556.  21h    parent port error
  5557.  22h    card command buffer full
  5558.  23h    no subdevice for this port
  5559.  24h    unknown error
  5560.  25h    external card busy
  5561.  26h    no more timers available
  5562.  27h    INT 14 vector changed
  5563.  28h    INT 08 vector changed
  5564.  29h    DPMI error
  5565.  2Ah    TSR buffer too small (or nonexistent)
  5566.  2Bh    out of asynchronous resources
  5567.  2Ch    out of timer resources
  5568.  2Dh    out of "other" timer resources
  5569.  2Eh    file I/O error
  5570.  2Fh    hardware memory > 64K
  5571.  
  5572. Bitfields for state flag :
  5573. Bit(s)    Description    (Table 0277)
  5574.  0    port is active
  5575.  1    output throttled (XOFF received, or DSR or CTS reset)
  5576.  2    input throttled (XOFF sent, or DTR or RTS reset)
  5577. --------S-148001-----------------------------
  5578. INT 14 - ARTICOM - UNLOAD ASYNCHRONOUS REDIRECTOR FROM MEMORY
  5579.     AX = 8001h
  5580. Return: AX = error code, if error (see #0279)
  5581. SeeAlso: AX=8000h"ARTICOM",AX=8002h"ARTICOM",AX=8003h"ARTICOM"
  5582. Index:    uninstall;ARTICOM
  5583. --------S-148001-----------------------------
  5584. INT 14 - COMM-DRV v14.0 - READ PORT METRICS - GET PORT PARAMETERS
  5585.     AX = 8001h
  5586.     DX = port number
  5587. Return: BX:DI -> Port Control Block (see #0286)
  5588. SeeAlso: AX=8000h"COMM-DRV",AX=8002h"COMM-DRV",AX=8003h"COMM-DRV"
  5589. --------S-148002-----------------------------
  5590. INT 14 - ARTICOM - GET ASYNCHRONOUS REDIRECTOR STATUS
  5591.     AX = 8002h
  5592.     ES:DI -> buffer for redirector status structure (see #0278)
  5593. Return: AX = error code, if error (see #0279)
  5594. SeeAlso: AX=8000h"ARTICOM",AX=8003h"ARTICOM"
  5595.  
  5596. Format of ARTICOM redirector status:
  5597. Offset    Size    Description    (Table 0278)
  5598.  00h    WORD    redirector major and minor version numbers
  5599.  02h    WORD    redirectable ports found
  5600.  04h    WORD    redirectable ports + local ports found
  5601.  06h    WORD    redirector internal buffer size
  5602.  08h    WORD    maximum servers maintained
  5603.  0Ah    WORD    number of adapters found
  5604. --------S-148002-----------------------------
  5605. INT 14 - COMM-DRV v14.0 - READ PORT METRICS - GET PORT PARAMETERS
  5606.     AX = 8002h
  5607.     DX = port number
  5608. Return: AH bit 7 set on error
  5609.     AH bit 7 clear if successful
  5610.         BX:DI -> Port Control Block (see #0286) (modifyable portion only)
  5611. SeeAlso: AX=8000h"COMM-DRV",AX=8001h"COMM-DRV",AX=8003h"COMM-DRV"
  5612. --------S-148003-----------------------------
  5613. INT 14 - ARTICOM - TRANSLATE ERROR CODE TO ERROR STRING
  5614.     AX = 8003h
  5615.     CX = error number to translate (see #0279)
  5616. Return: ES:DI -> ASCIZ error text or 0000h:0000h if unable to translate
  5617. SeeAlso: AX=8000h
  5618.  
  5619. (Table 0279)
  5620. Values for ARTICOM error codes:
  5621.  00h    "No error"
  5622.  01h    "An invalid port number was specified"
  5623.  02h    "Port is already redirected"
  5624.  03h    "Too many ports redirected"
  5625.  04h    "Cannot locate the server"
  5626.  05h    "Server is busy"
  5627.  06h    "Access denied"
  5628.  07h    "Resource in use"
  5629.  08h    "Resource in use - request queued"
  5630.  09h    "No such resource"
  5631.  0Ah    "Invalid username/password pair"
  5632.  0Bh    "Noncompatible version number"
  5633.  0Ch    "Can't remove from memory"
  5634.  0Dh    "Bad NETBIOS adapter number"
  5635.  0Eh    "No more entries in list"
  5636.  0Fh    "Resource is not available at this time"
  5637.  10h    "Invalid value to INT 14 call"
  5638. --------S-148003-----------------------------
  5639. INT 14 - COMM-DRV v14.0 - READ PORT METRICS - GET I/O BUFFER SIZES
  5640.     AX = 8003h
  5641.     DX = port number
  5642. Return: AX = number of characters in input buffer
  5643.     BX = input buffer size
  5644.     CX = number of characters in output buffer
  5645.     DX = output buffer size
  5646. SeeAlso: AX=8000h"COMM-DRV",AX=8001h"COMM-DRV",AX=8002h"COMM-DRV"
  5647. --------S-148004-----------------------------
  5648. INT 14 - ARTICOM - ATTACH ASYNCHRONOUS RESOURCE
  5649.     AX = 8004h
  5650.     DX = port to redirect (COM1=0, COM2=1, ...)
  5651.     CH = attach type
  5652.     CL = adapter to use for attach, 0FFh to search all
  5653.     ES:DI -> attachment structure (see #0280)
  5654. Return: AX = error code, if error (see #0279)
  5655. Note:    The wildcard '*' is supported in the server and resource fields.  If
  5656.       wild cards are used then the first matching available server is
  5657.       attached.
  5658. SeeAlso: AX=8000h,AX=8003h,AX=8005h
  5659.  
  5660. Format of ARTICOM attachment structure:
  5661. Offset    Size    Description    (Table 0280)
  5662.  00h 16 BYTEs    server to look for attach
  5663.  10h 16 BYTEs    attach to resource name
  5664.  20h 16 BYTEs    username for attach
  5665.  30h 16 BYTEs    password for username or resource
  5666.  40h    BYTE    attach type
  5667.         00h normal
  5668.         01h queue if resource is in use (not yet supported in v1.00)
  5669. --------S-148005-----------------------------
  5670. INT 14 - ARTICOM - DETACH ASYNCHRONOUS RESOURCE
  5671.     AX = 8005h
  5672.     DX = port to detach (COM1=0, COM2=1, ...)
  5673. Return: AX = error code, if error (see #0279)
  5674. Note:    only a previously attached resource can be detached
  5675. SeeAlso: AX=8000h,AX=8003h,AX=8004h
  5676. --------S-148006-----------------------------
  5677. INT 14 - ARTICOM - GET RESOURCE INFORMATION
  5678.     AX = 8006h
  5679.     BX = remote port (COM1=0, COM2=1, ...)
  5680.     CL = adapter number, FFh to try all adapters
  5681.     ES:DI -> resource information structure (see #0281)
  5682.     DS:SI -> 16 byte server name. See note.
  5683. Return: AX = error code, if error (see #0279)
  5684.     BX = next remote port, recall to get next resource info
  5685. Note:    Wild cards supported in both the resource field and server name
  5686.       string DS:SI. If wild cards used then first matching available
  5687.       resource information is searched. Set the resource field to FFh to
  5688.       return all resources.
  5689. SeeAlso: AX=8000h,AX=8002h,AX=8003h,AX=8007h
  5690.  
  5691. Format of ARTICOM resource information structure:
  5692. Offset    Size    Description    (Table 0281)
  5693.  00h    BYTE    00h = free, else used
  5694.  01h 16 BYTEs    resource name
  5695.  11h 16 BYTEs    username of resource user
  5696.  21h    WORD    amount of time used
  5697.  23h    WORD    amount of time remaining
  5698.  53h 48 BYTEs    description of resource
  5699.  93h 64 BYTEs    initialization string for modem
  5700.  B3h 32 BYTEs    dial string for modem
  5701.  D3h 32 BYTEs    hang-up string for modem
  5702. --------S-148007-----------------------------
  5703. INT 14 - ARTICOM - GET REDIRECTED PORT INFORMATION
  5704.     AX = 8007h
  5705.     DX = port index (COM1=0, COM2=1, ...)
  5706.     ES:DI -> buffer for port information structure (see #0282)
  5707. Return: CF clear if redirection info returned and port is redirected
  5708.     CF set if not a redirected port
  5709.     AX = error code, if error (see #0279)
  5710. SeeAlso: AX=8000h,AX=8003h,AX=8006h,AX=8008h
  5711.  
  5712. Format of ARTICOM port information structure:
  5713. Offset    Size    Description    (Table 0282)
  5714.  00h 16 BYTEs    server name resource is on
  5715.  10h    BYTE    adapter number server is on
  5716.  11h 16 BYTEs    resource name
  5717.  21h    WORD    remote port index, use to get additional information
  5718.  23h    WORD    buffer size
  5719.  25h    WORD    baud rate (see #0283)
  5720.  26h    BYTE    modem status register
  5721.  27h    BYTE    modem control register
  5722.  28h    BYTE    line status register
  5723.  29h    BYTE    line control register
  5724.  2Ah    BYTE    flow control in use: 0 - NONE, 1 - XON/XOFF, 2 - RTS/CTS
  5725.  2Bh    WORD    send timeout in ticks
  5726.  2Dh    WORD    receive timeout in ticks
  5727.  2Fh    WORD    time used on remote port
  5728.  31h    WORD    time left before timeout
  5729.  33h    BYTE    if server changes allowed?
  5730.  34h    WORD    FFFFh (-1) if connection ok, else old port index
  5731.  
  5732. (Table 0283)
  5733. Values for ARTICOM baud rate:
  5734.  00h    110
  5735.  01h    150
  5736.  02h    300
  5737.  03h    600
  5738.  04h    1200
  5739.  05h    2400
  5740.  06h    4800
  5741.  07h    9600
  5742.  08h    19200
  5743.  09h    38400
  5744.  0Ah    57600
  5745.  0Bh    115200
  5746.  0Ch    134.5
  5747.  0Dh    1800
  5748.  0Eh    2000
  5749.  0Fh    3600
  5750.  10h    7200
  5751. SeeAlso: #0228
  5752. --------S-148008-----------------------------
  5753. INT 14 - ARTICOM - GET AVAILABLE SERVER NAME
  5754.     AX = 8008h
  5755.     BX = server index (0,1,...)
  5756.     ES:DI -> server name structure (see #0284)
  5757. Return: AX = error code, if error (see #0279)
  5758.     BX = next remote port, repeat call to get next available server
  5759. Note:    the wildcard '*' is supported in the server name field.     Set the
  5760.       server name to FFh to search for all servers.
  5761. SeeAlso: AX=8000h,AX=8003h,AX=8007h
  5762.  
  5763. Format of ARTICOM server name structure:
  5764. Offset     Size      Description    (Table 0284)
  5765.   00h 16 BYTEs      (call) ASCIZ server name
  5766.   10h     BYTE      (ret) the adapter server is found
  5767. --------S-148009-----------------------------
  5768. INT 14 - ARTICOM - SET SEND AND RECEIVE TIMEOUTS
  5769.     AX = 8009h
  5770.     BX = send timeout in ticks
  5771.     CX = receive timeout in ticks
  5772.     DX = port index (COM1=0, COM2=1, ...)
  5773. Return: nothing
  5774. SeeAlso: AX=8000h,AX=800Ah
  5775. --------S-14800A-----------------------------
  5776. INT 14 - ARTICOM - MODIFY FLOW CONTROL
  5777.     AX = 800Ah
  5778.     BL = flow control type (00h none, 01h XON/XOFF, 02h RTS/CTS)
  5779.     DX = port index (COM1=0, COM2=1, ...)
  5780. Return: AX = error code, if error (see #0279)
  5781. Note:    for attached ports only!
  5782. SeeAlso: AX=8000h,AX=8003h,AX=8009h
  5783. --------S-148025-----------------------------
  5784. INT 14 - ARTICOM - SET INTERNAL SEND/RECEIVE VECTOR
  5785.     AX = 8025h
  5786.     DS:DX -> address of trap function (see #0285) to call on read/write
  5787. Return: nothing
  5788. Note:    setting the vector to a user function allows the redirector's activity
  5789.       to be monitored.
  5790. SeeAlso: AX=8000h,AX=8035h,INT 21/AH=25h
  5791.  
  5792. (Table 0285)
  5793. Values ARTICOM trap function is called with:
  5794.     AH = operation
  5795.         80h reading character
  5796.         81h writing character
  5797.     AL = character
  5798. Return: AX must be preserved
  5799.     far JUMP to old trap function (see AX=8035h)
  5800. --------S-148035-----------------------------
  5801. INT 14 - ARTICOM - GET INTERNAL SEND/RECEIVE VECTOR
  5802.     AX = 8035h
  5803. Return: ES:BX -> address of current send/receive routine
  5804. Note:    this function returns the address of the routine which is called
  5805.       inside A-REDIR.EXE each time a character is received or sent on the
  5806.       active COM port.
  5807. SeeAlso: AX=8000h,AX=8025h,INT 21/AH=35h
  5808. --------S-1481-------------------------------
  5809. INT 14 - COURIERS.COM - CHECK IF PORT BUSY
  5810.     AH = 81h
  5811.     AL = port number (1-4)
  5812. Return: AH = 00h port available
  5813.          01h port exists but already in use
  5814.          02h port nonexistent
  5815. Program: COURIERS is a TSR utility by PC Magazine
  5816. SeeAlso: AH=83h,AH=8Dh
  5817. --------S-1481-------------------------------
  5818. INT 14 - COMM-DRV - EXTENDED INITIALIZATION
  5819.     AH = 81h
  5820.     BX:DI -> port control block (see #0286)
  5821.     DX = port number
  5822. Return: AH = line status register (see #0223)
  5823.         error if bit 7 set
  5824.     AL = modem status register (see #0224)
  5825. Program: COMM-DRV is a universal serial communications driver by Willies'
  5826.       Computer Software Company, which supports standard INT 14 and
  5827.       FOSSIL calls as well as its own interfaces
  5828. Note:    AX=8001h should be called first to fill in the port control block
  5829. SeeAlso: AH=00h,AX=8001h,AH=82h"COMM-DRV",AH=86h"COMM-DRV"
  5830.  
  5831. Format of COMM-DRV port control block:
  5832. Offset    Type    Description    (Table 0286)
  5833.  00h    WORD    port IO address
  5834.  02h    WORD    port IRQ
  5835.  04h    WORD    baud rate
  5836.  06h    WORD    parity
  5837.  08h    WORD    data bits
  5838.  0Ah    WORD    stop bits
  5839.  0Ch    WORD    break status (0000h off)
  5840.  0Eh    WORD    flow control protocol
  5841.  10h    BYTE    input block
  5842.  11h    BYTE    output block
  5843.  12h    WORD    low threshold
  5844.  14h    WORD    high threshold
  5845.  16h    WORD    segment of buffer
  5846.  18h    WORD    offset of buffer
  5847.  1Ah    WORD    input buffer length
  5848.  1Ch    WORD    output buffer length
  5849.  1Eh    BYTE    auxiliary address
  5850.  1Fh    BYTE    spare
  5851.  20h  4 WORDs    spares
  5852. --------V-148100-----------------------------
  5853. INT 14 - VIDEO FOSSIL - RETURN VFOSSIL INFORMATION
  5854.     AX = 8100h
  5855.     ES:DI -> buffer for VFOSSIL information (see #0287)
  5856. Return: AX = 1954h if installed
  5857. SeeAlso: AH=7Eh,AX=8101h
  5858.  
  5859. Format of VFOSSIL information:
  5860. Offset    Size    Description    (Table 0287)
  5861.  00h    WORD    size of information in bytes, including this field
  5862.  02h    WORD    VFOSSIL major version
  5863.  04h    WORD    VFOSSIL revision level
  5864.  06h    WORD    highest VFOSSIL application function supported
  5865. --------V-148101-----------------------------
  5866. INT 14 - VIDEO FOSSIL - OPEN VFOSSIL
  5867.     AX = 8101h
  5868.     ES:DI -> buffer for application function table (see #0288)
  5869.     CX = length of buffer in bytes
  5870. Return: AX = 1954h if installed
  5871.         BH = highest VFOSSIL application function supported
  5872. Note:    the number of initialized pointers in the application function table
  5873.       will never exceed CX/4; if the buffer is large enough, BH+1 pointers
  5874.       will be initialized
  5875. SeeAlso: AX=8102h
  5876.  
  5877. Format of VFOSSIL application function table:
  5878. Offset    Size    Description    (Table 0288)
  5879.  00h    DWORD    -> function to query current video mode (VioGetMode)(see #0293)
  5880.  04h    DWORD    -> function to set video mode (VioSetMode) (see #0294)
  5881.  08h    DWORD    -> function to query hardware config (VioGetConfig) (see #0295)
  5882.  0Ch    DWORD    -> function to write data in TTY mode (VioWrtTTY) (see #0296)
  5883.  10h    DWORD    -> function to get current ANSI state (VioGetANSI) (see #0297)
  5884.  14h    DWORD    -> function to set new ANSI state (VioSetANSI) (see #0298)
  5885.  18h    DWORD    -> function to get curr cursor position (VioGetCurPos)
  5886.           (see #0299)
  5887.  1Ch    DWORD    -> function to set cursor position (VioSetCurPos) (see #0300)
  5888.  20h    DWORD    -> function to get cursor shape (VioGetCurType) (see #0301)
  5889.  24h    DWORD    -> function to set cursor shape (VioSetCurType) (see #0302)
  5890.  28h    DWORD    -> function to scroll screen up (VioScrollUp) (see #0303)
  5891.  2Ch    DWORD    -> function to scroll screen down (VioScrollDn) (see #0304)
  5892.  30h    DWORD    -> function to read cell string from screen (VioReadCellStr)
  5893.           (see #0305)
  5894.  34h    DWORD    -> function to read char string from screen (VioReadCharStr)
  5895.           (see #0306)
  5896.  38h    DWORD    -> function to write a cell string (VioWrtCellStr)
  5897.           (see #0307)
  5898.  3Ch    DWORD    -> function to write char string, leaving attr (VioWrtCharStr)
  5899.           (see #0308)
  5900.  40h    DWORD    -> function to write char string,const attr (VioWrtCharStrAttr)
  5901.           (see #0309)
  5902.  44h    DWORD    -> function to replicate an attribute (VioWrtNAttr)
  5903.           (see #0310)
  5904.  48h    DWORD    -> function to replicate a cell (VioWrtNCell)
  5905.           (see #0311)
  5906.  4Ch    DWORD    -> function to replicate a character (VioWrtNChar)
  5907.           (see #0312)
  5908.  
  5909. Format of VFOSSIL video mode data structure:
  5910. Offset    Size    Description    (Table 0289)
  5911.  00h    WORD    length of structure including this field
  5912.  02h    BYTE    mode characteristics
  5913.         bit 0: clear if MDA, set otherwise
  5914.         bit 1: graphics mode
  5915.         bit 2: color disabled (black-and-white)
  5916.  03h    BYTE    number of colors supported (1=2 colors, 4=16 colors, etc)
  5917.  04h    WORD    number of text columns
  5918.  06h    WORD    number of text rows
  5919.  08h    WORD    reserved
  5920.  0Ah    WORD    reserved
  5921.  0Ch    DWORD    reserved
  5922. SeeAlso: #0293,#0294
  5923.  
  5924. Format of VFOSSIL video configuration data:
  5925. Offset    Size    Description    (Table 0290)
  5926.  00h    WORD    structure length including this field
  5927.  02h    WORD    adapter type
  5928.         00h monochrome/printer
  5929.         01h CGA
  5930.         02h EGA
  5931.         03h VGA
  5932.         07h 8514/A
  5933.  04h    WORD    display type
  5934.         00h monochrome
  5935.         01h color
  5936.         02h enhanced color
  5937.         09h 8514
  5938.  06h    DWORD    adapter memory size
  5939. SeeAlso: #0295
  5940.  
  5941. Format of VFOSSIL cursor type record:
  5942. Offset    Size    Description    (Table 0291)
  5943.  00h    WORD    cursor start line
  5944.  02h    WORD    cursor end line
  5945.  04h    WORD    cursor width (always 01h)
  5946.  06h    WORD    cursor attribute (FFFFh = hidden)
  5947.  
  5948. (Table 0292)
  5949. Values for VFOSSIL error code:
  5950.  0000h    successful
  5951.  0074h    internal VIO failure
  5952.  0163h    unsupported mode
  5953.  0166h    invalid row value
  5954.  0167h    invalid column value
  5955.  017Eh    buffer too small
  5956.  01A5h    invalid VIO parameter
  5957.  01B4h    invalid VIO handle
  5958.  
  5959. (Table 0293)
  5960. Call VioGetMode with:
  5961.     STACK:    WORD    VIO handle (must be 00h)
  5962.         DWORD    pointer to video mode data structure (see #0289)
  5963. Return: AX = error code (00h, 74h, 17Eh, 1B4h) (see #0292)
  5964. SeeAlso: #0294
  5965.  
  5966. (Table 0294)
  5967. Call VioSetMode with:
  5968.     STACK:    WORD    VIO handle (must be 00h)
  5969.         DWORD    pointer to video mode data structure (see #0289)
  5970. Return: AX = error code (00h, 74h, 163h, 17Eh, 1A5h, 1B4h) (see #0292)
  5971. SeeAlso: #0293
  5972.  
  5973. (Table 0295)
  5974. Call VioGetConfig with:
  5975.     STACK:    WORD    VIO handle (must be 00h)
  5976.         DWORD    pointer to video configuration data buffer (see #0290)
  5977. Return: AX = error code (00h, 74h, 17Eh, 1B4h) (see #0292)
  5978.  
  5979. (Table 0296)
  5980. Call VioWrtTTY with:
  5981.     STACK:    WORD    VIO handle (must be 00h)
  5982.         WORD    length of string
  5983.         DWORD    pointer to character string to be written to screen
  5984. Return: AX = error code (00h, 74h, 1B4h) (see #0292)
  5985. Notes:    write wraps at end of line and terminates if it reaches end of screen
  5986.     in ANSI mode, ANSI control sequences are interpreted, and this func is
  5987.       not required to be reentrant; in non-ANSI mode, the function is
  5988.       reentrant and may be called from within an MS-DOS function call
  5989.  
  5990. (Table 0297)
  5991. Call VioGetANSI with:
  5992.     STACK:    WORD    VIO handle (must be 00h)
  5993.         DWORD    pointer to WORD which will be set to 00h if ANSI is off
  5994.             or 01h if ANSI is on
  5995. Return: AX = error code (00h, 74h, 1B4h) (see #0292)
  5996. SeeAlso: #0298
  5997.  
  5998. (Table 0298)
  5999. Call VioSetANSI with:
  6000.     STACK:    WORD    VIO handle (must be 00h)
  6001.         DWORD    pointer to WORD indicating new state of ANSI
  6002.             00h off, 01h on
  6003. Return: AX = error code (00h, 74h, 1A4h, 1B4h) (see #0292)
  6004. SeeAlso: #0297
  6005.  
  6006. (Table 0299)
  6007. Call VioGetCurPos with:
  6008.     STACK:    WORD    VIO handle (must be 00h)
  6009.         DWORD    pointer to WORD to hold current cursor column (0-based)
  6010.         DWORD    pointer to WORD to hold current cursor row (0-based)
  6011. Return: AX = error code (00h, 74h, 1B4h) (see #0292)
  6012. SeeAlso: #0300
  6013.  
  6014. (Table 0300)
  6015. Call VioSetCurPos with:
  6016.     STACK:    WORD    VIO handle (must be 00h)
  6017.         WORD    cursor column
  6018.         WORD    cursor row
  6019. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #0292)
  6020. Note:    if either coordinate is invalid, the cursor is not moved
  6021. SeeAlso: #0299
  6022.  
  6023. (Table 0301)
  6024. Call VioGetCurType with:
  6025.     STACK:    WORD    VIO handle (must be 00h)
  6026.         DWORD    pointer to cursor type record (see #0291)
  6027. Return: AX = error code (00h, 74h, 1B4h) (see #0292)
  6028. SeeAlso: #0302
  6029.  
  6030. (Table 0302)
  6031. Call VioSetCurType with:
  6032.     STACK:    WORD    VIO handle (must be 00h)
  6033.         DWORD    pointer to cursor type record (see #0291)
  6034. Return: AX = error code (00h, 74h, 1A4h, 1B4h) (see #0292)
  6035. SeeAlso: #0303
  6036.  
  6037. (Table 0303)
  6038. Call VioScrollUp with:
  6039.     STACK:    WORD    VIO handle (must be 00h)
  6040.         DWORD    pointer to char/attr cell for filling emptied rows
  6041.         WORD    number or rows to scroll (FFFFh = clear area)
  6042.         WORD    right column of scroll area
  6043.         WORD    bottom row of scroll area
  6044.         WORD    left column of scroll area
  6045.         WORD    top row of scroll area
  6046. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #0292)
  6047. SeeAlso: #0304,INT 10/AH=06h
  6048.  
  6049. (Table 0304)
  6050. Call VioScrollDn with:
  6051.     STACK:    WORD    VIO handle (must be 00h)
  6052.         DWORD    pointer to char/attr cell for filling emptied rows
  6053.         WORD    number or rows to scroll (FFFFh = clear area)
  6054.         WORD    right column of scroll area
  6055.         WORD    bottom row of scroll area
  6056.         WORD    left column of scroll area
  6057.         WORD    top row of scroll area
  6058. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #0292)
  6059. SeeAlso: #0303,INT 10/AH=07h
  6060.  
  6061. (Table 0305)
  6062. Call VioReadCellStr with:
  6063.     STACK:    WORD    VIO handle (must be 00h)
  6064.         WORD    column at which to start reading
  6065.         WORD    row at which to start reading
  6066.         DWORD    pointer to WORD containing length of buffer in bytes
  6067.             on return, WORD contains number of bytes actually read
  6068.         DWORD    pointer to buffer for cell string
  6069. Return: AX = error code (00h, 74h, 166h ,167h, 1B4h) (see #0292)
  6070.  
  6071. (Table 0306)
  6072. Call VioReadCharStr with:
  6073.     STACK:    WORD    VIO handle (must be 00h)
  6074.         WORD    column at which to start reading
  6075.         WORD    row at which to start reading
  6076.         DWORD    pointer to WORD containing length of buffer in bytes
  6077.             on return, WORD contains number of bytes actually read
  6078.         DWORD    pointer to buffer for character string
  6079. Return: AX = error code (00h, 74h, 166h ,167h, 1B4h) (see #0292)
  6080.  
  6081. (Table 0307)
  6082. Call VioWrtCellStr with:
  6083.     STACK:    WORD    VIO handle (must be 00h)
  6084.         WORD    column at which to start writing
  6085.         WORD    row at which to start writing
  6086.         WORD    length of cell string in bytes
  6087.         DWORD    pointer to cell string to write
  6088. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #0292)
  6089. Note:    write wraps at end of line and terminates if it reaches end of screen
  6090.  
  6091. (Table 0308)
  6092. Call VioWrtCharStr with:
  6093.     STACK:    WORD    VIO handle (must be 00h)
  6094.         WORD    column at which to start writing
  6095.         WORD    row at which to start writing
  6096.         WORD    length of character string
  6097.         DWORD    pointer to character string to write
  6098. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #0292)
  6099. Note:    write wraps at end of line and terminates if it reaches end of screen
  6100.  
  6101. (Table 0309)
  6102. Call VioWrtCharStrAttr with:
  6103.     STACK:    WORD    VIO handle (must be 00h)
  6104.         DWORD    pointer to attribute to be applied to each character
  6105.         WORD    column at which to start writing
  6106.         WORD    row at which to start writing
  6107.         WORD    length of character string
  6108.         DWORD    pointer to character string to write
  6109. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #0292)
  6110. Note:    write wraps at end of line and terminates if it reaches end of screen
  6111.  
  6112. (Table 0310)
  6113. Call VioWrtNAttr with:
  6114.     STACK:    WORD    VIO handle (must be 00h)
  6115.         WORD    column at which to start writing
  6116.         WORD    row at which to start writing
  6117.         WORD    number of times to write attribute
  6118.         DWORD    pointer to display attribute to replicate
  6119. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #0292)
  6120. Note:    write wraps at end of line and terminates if it reaches end of screen
  6121.  
  6122. (Table 0311)
  6123. Call VioWrtNCell with:
  6124.     STACK:    WORD    VIO handle (must be 00h)
  6125.         WORD    column at which to start writing
  6126.         WORD    row at which to start writing
  6127.         WORD    number of times to write cell
  6128.         DWORD    pointer to cell to replicate
  6129. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #0292)
  6130. Note:    write wraps at end of line and terminates if it reaches end of screen
  6131.  
  6132. (Table 0312)
  6133. Call VioWrtNChar with:
  6134.     STACK:    WORD    VIO handle (must be 00h)
  6135.         WORD    column at which to start writing
  6136.         WORD    row at which to start writing
  6137.         WORD    number of times to write character
  6138.         DWORD    pointer to character to replicate
  6139. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #0292)
  6140. Note:    write wraps at end of line and terminates if it reaches end of screen
  6141. --------V-148102-----------------------------
  6142. INT 14 - VIDEO FOSSIL - CLOSE VFOSSIL
  6143.     AX = 8102h
  6144. Return: AX = 1954h
  6145. Note:    terminates all operations; after this call, the video FOSSIL may either
  6146.       be removed from memory or reinitialized
  6147. SeeAlso: AX=8101h,AX=8103h
  6148. --------V-148103-----------------------------
  6149. INT 14 - VIDEO FOSSIL - UNINSTALL
  6150.     AX = 8103h
  6151. Return: AX = 1954h
  6152. Note:    this is an extension to the VFOSSIL spec by Bob Hartman's VFOS_IBM
  6153. --------K-1482-------------------------------
  6154. INT 14 - KEYBOARD FOSSIL
  6155.     AH = 82h
  6156. SeeAlso: AH=7Eh
  6157. --------S-1482-------------------------------
  6158. INT 14 - COURIERS.COM - CONFIGURE PORT
  6159.     AH = 82h
  6160.     AL = port number (1-4)
  6161.     BX = speed (bps)
  6162.     CX = bit flags
  6163.         bit 0: enable input flow control
  6164.         bit 1: enable output flow control
  6165.         bit 2: use X.PC protocol (not yet implemented)
  6166. Return: nothing
  6167. SeeAlso: AH=00h,AH=8Ch,INT 7A"X.PC"
  6168. --------S-1482-------------------------------
  6169. INT 14 - COMM-DRV v14.0 - PORT CLEANUP
  6170.     AH = 82h
  6171.     DX = port number
  6172. Return: AH bit 7 set on error
  6173.     AH bit 7 clear if successful
  6174. Desc:    reset the port to its state before the AH=81h initialization and unhook
  6175.       any interrupts used by the port
  6176. SeeAlso: AH=81h"COMM-DRV",AH=83h"COMM-DRV"
  6177. ----------1483-------------------------------
  6178. INT 14 - SYSTEM FOSSIL
  6179.     AH = 83h
  6180. SeeAlso: AH=7Eh
  6181. --------S-1483-------------------------------
  6182. INT 14 - COURIERS.COM - START INPUT
  6183.     AH = 83h
  6184.     ES:BX -> circular input buffer
  6185.     CX = length of buffer
  6186.         (should be at least 128 bytes if input flow control enabled)
  6187. Return: nothing
  6188. SeeAlso: AH=18h,AH=87h,AH=8Dh,AH=A5h"BAPI"
  6189. --------S-1483-------------------------------
  6190. INT 14 - COMM-DRV v14.0 - FLUSH COMMUNICATION BUFFERS
  6191.     AH = 83h
  6192.     DX = port number
  6193.     AL = subfunction
  6194.         00h flush input buffer
  6195.         01h flush output buffer
  6196.         02h flush both buffers
  6197. Return: AH bit 7 set on error
  6198.     AH bit 7 clear if successful
  6199. SeeAlso: AH=81h"COMM-DRV",AH=84h"COMM-DRV"
  6200. --------S-1484-------------------------------
  6201. INT 14 - COURIERS.COM - READ CHARACTER
  6202.     AH = 84h
  6203. Return: ZF set if no characters available
  6204.     ZF clear
  6205.        AL = character
  6206.        AH = modem status bits
  6207.         bit 7: set on input buffer overflow
  6208. SeeAlso: AH=02h,AH=86h,AH=89h
  6209. --------S-1484-------------------------------
  6210. INT 14 - COMM-DRV v14.0 - SEND PACKET
  6211.     AH = 84h
  6212.     CX = packet length in bytes
  6213.     DX = port number
  6214.     ES:DI -> packet to be sent
  6215. Return: AH = line status (see #0223)
  6216.         bit 7 set on error
  6217.     AL destroyed
  6218. SeeAlso: AH=83h"COMM-DRV",AH=85h"COMM-DRV",AH=86h"COMM-DRV"
  6219. --------S-1485-------------------------------
  6220. INT 14 - COURIERS.COM - FLUSH PENDING INPUT
  6221.     AH = 85h
  6222. Return: nothing
  6223. SeeAlso: AH=0Ah,AH=88h"COURIERS"
  6224. --------S-1485-------------------------------
  6225. INT 14 - COMM-DRV v14.0 - RECEIVE PACKET
  6226.     AH = 85h
  6227.     CX = length of packet in bytes
  6228.     DX = port number
  6229.     ES:DI -> buffer for packet
  6230. Return: AH = line status (see #0223)
  6231.         bit 7 set on error
  6232.     AL destroyed
  6233. Note:    this call requires that at least the requested number of bytes are
  6234.       already present in the input buffer, and will fail if there are
  6235.       fewer bytes available
  6236. SeeAlso: AH=84h"COMM-DRV",AH=86h"COMM-DRV",AH=8Eh"COMM-DRV"
  6237. --------S-1486-------------------------------
  6238. INT 14 - COURIERS.COM - START OUTPUT
  6239.     AH = 86h
  6240.     ES:BX -> output buffer
  6241.     CX = length of output buffer
  6242. Return: nothing
  6243. SeeAlso: AH=19h,AH=83h"COURIERS",AH=A4h"BAPI"
  6244. --------S-1486-------------------------------
  6245. INT 14 - COMM-DRV v14.0 - SET INPUT/OUTPUT TIMEOUTS
  6246.     AH = 86h
  6247.     BL = maximum clock ticks to wait before signalling error on input func
  6248.     BH = maximum clock ticks to wait before signalling error on output
  6249.     DX = port number
  6250.     SI = input timeout in clock ticks if BL=FFh and BH=FFh
  6251.     DI = output timeout in clock ticks if BL=FFh and BH=FFh
  6252. Return: AH bit 7 set on error
  6253.     AH bit 7 clear if successful
  6254. Note:    functions 02h, 85h, and 8Eh will wait for the input timeout before
  6255.       returning an error when no data is available; functions 01h and 84h
  6256.       will wait for the output timeout before returning an error if there
  6257.       is no space to output the data
  6258. SeeAlso: AH=01h,AH=02h,AH=84h"COMM-DRV",AH=85h"COMM-DRV",AH=8Eh"COMM-DRV"
  6259. --------S-1487-------------------------------
  6260. INT 14 - COURIERS.COM - OUTPUT STATUS
  6261.     AH = 87h
  6262. Return: AX = number of unsent characters
  6263. SeeAlso: AH=88h"COURIERS"
  6264. --------S-1487-------------------------------
  6265. INT 14 - COMM-DRV v14.0 - TURN ON DTR
  6266.     AH = 87h
  6267.     DX = port number
  6268. Return: AH bit 7 set on error
  6269.     AH bit 7 clear if successful
  6270. SeeAlso: AX=8000h"COMM-DRV",AH=88h"COMM-DRV",AH=89h"COMM-DRV"
  6271. --------S-1488-------------------------------
  6272. INT 14 - COURIERS.COM - ABORT OUTPUT
  6273.     AH = 88h
  6274. SeeAlso: AH=09h"FOSSIL",AH=85h"COURIERS"
  6275. --------S-1488-------------------------------
  6276. INT 14 - COMM-DRV v14.0 - TURN OFF DTR
  6277.     AH = 88h
  6278.     DX = port number
  6279. Return: AH bit 7 set on error
  6280.     AH bit 7 clear if successful
  6281. Program: COMM-DRV is a universal serial communications driver by Willies'
  6282.       Computer Software Company, which supports standard INT 14 and
  6283.       FOSSIL calls as well as its own interfaces
  6284. SeeAlso: AX=8000h"COMM-DRV",AH=87h"COMM-DRV",AH=8Ah"COMM-DRV"
  6285. --------S-1489-------------------------------
  6286. INT 14 - COURIERS.COM - SEND SINGLE CHARACTER
  6287.     AH = 89h
  6288.     CL = character to send
  6289. Return: nothing
  6290. SeeAlso: AH=01h,AH=84h"COURIERS"
  6291. --------S-1489-------------------------------
  6292. INT 14 - COMM-DRV v14.0 - TURN ON RTS
  6293.     AH = 89h
  6294.     DX = port number
  6295. Return: AH bit 7 set on error
  6296.     AH bit 7 clear if successful
  6297. SeeAlso: AX=8000h"COMM-DRV",AH=87h"COMM-DRV",AH=8Ah"COMM-DRV"
  6298. --------S-148A-------------------------------
  6299. INT 14 - COURIERS.COM - SEND BREAK
  6300.     AH = 8Ah
  6301. Return: nothing
  6302. SeeAlso: AH=89h"COURIERS",AH=FAh
  6303. --------S-148A-------------------------------
  6304. INT 14 - COMM-DRV v14.0 - TURN OFF RTS
  6305.     AH = 8Ah
  6306.     DX = port number
  6307. Return: AH bit 7 set on error
  6308.     AH bit 7 clear if successful
  6309. SeeAlso: AX=8000h"COMM-DRV",AH=88h"COMM-DRV",AH=89h"COMM-DRV"
  6310. --------S-148B-------------------------------
  6311. INT 14 - COMM-DRV v14.0 - SET USER INTERRUPT ROUTINE
  6312.     AH = 8Bh
  6313.     CX = bitmask of interrupt to process
  6314.         00h = deinstall
  6315.     BX:DI -> DWORD containing address of function to be called
  6316. Return: AH bit 7 clear if successful
  6317.     AH bit 7 set on error
  6318. --------S-148C-------------------------------
  6319. INT 14 - COURIERS.COM - SET SPEED
  6320.     AH = 8Ch
  6321.     BX = speed in bps
  6322. Return: nothing
  6323. SeeAlso: AH=00h,AH=82h"COURIERS"
  6324. --------S-148C-------------------------------
  6325. INT 14 - COMM-DRV v14.0 - READ UART REGISTER
  6326.     AH = 8Ch
  6327.     AL = register offset
  6328.     DX = port number
  6329. Return: AH bit 7 set on error
  6330.     AH bit 7 clear if successful
  6331.         AL = contents of UART register
  6332. SeeAlso: AH=8Dh"COMM-DRV"
  6333. --------S-148D-------------------------------
  6334. INT 14 - COURIERS.COM - DECONFIGURE PORT
  6335.     AH = 8Dh
  6336. Return: nothing
  6337. SeeAlso: AH=82h"COURIERS"
  6338. --------S-148D-------------------------------
  6339. INT 14 - COMM-DRV v14.0 - WRITE UART REGISTER
  6340.     AH = 8Dh
  6341.     AL = register offset
  6342.     BL = new value for UART register
  6343.     DX = port number
  6344. Return: AH bit 7 set on error
  6345.     AH bit 7 clear if successful
  6346. SeeAlso: AH=8Ch"COMM-DRV"
  6347. --------S-148E-------------------------------
  6348. INT 14 - COMM-DRV v14.0 - READ PACKET NONDESTRUCTIVELY
  6349.     AH = 8Eh
  6350.     CX = length of packet in bytes
  6351.     DX = port number
  6352.     ES:DI -> buffer for packet
  6353. Return: AH = line status (see #0223)
  6354.         bit 7 set on error (see AX=8000h"COMM-DRV")
  6355.     AL destroyed
  6356. Program: COMM-DRV is a universal serial communications driver by Willies'
  6357.       Computer Software Company, which supports standard INT 14 and
  6358.       FOSSIL calls as well as its own interfaces
  6359. Desc:    retrieve a packet from the input buffer without removing it from the
  6360.       buffer
  6361. Note:    this call requires that at least the requested number of bytes are
  6362.       already present in the input buffer, and will fail if there are
  6363.       fewer bytes available
  6364. SeeAlso: AX=8000h"COMM-DRV",AH=84h"COMM-DRV",AH=85h"COMM-DRV",AH=86h"COMM-DRV"
  6365. --------S-14A0-------------------------------
  6366. INT 14 - 3com BAPI SERIAL I/O - CONNECT TO PORT
  6367.     AH = A0h
  6368.     ES:BX -> ASCIZ internet host name
  6369.     CX = length of name
  6370. Return: AH = return code (00h,04h-06h,08h,0Ah-0Ch) (see #0313)
  6371.     CL = session ID
  6372. Program: the Bridge Application Program Interface is a set of functions which
  6373.       makes many of the details of LAN communications transparent
  6374. Note:    Novell TELAPI.EXE returns AH=09h (not supported) and CL=00h
  6375. SeeAlso: AH=A1h"BAPI",AH=A2h"BAPI",AH=A5h"BAPI",AX=AF00h
  6376.  
  6377. (Table 0313)
  6378. Values for 3com BAPI return code:
  6379.  00h    successful
  6380.  01h    no characters written
  6381.  02h    no characters read
  6382.  03h    no such session
  6383.  04h    clearinghouse name not found
  6384.  05h    no response from host
  6385.  06h    no more sessions available
  6386.  07h    session aborted
  6387.  08h    invalid clearinghouse name
  6388.  09h    not supported
  6389.  0Ah    internal (general) network error
  6390.  0Bh    out of memory
  6391.  0Ch    invalid IP address
  6392. --------S-14A0--CXFFFF-----------------------
  6393. INT 14 - Interconnections Inc. TES - INSTALLATION CHECK/STATUS REPORT
  6394.     AH = A0h
  6395.     CX = FFFFh
  6396. Return: CF clear if successful
  6397.         AX = 5445h ('TE')
  6398.         CX <> FFFFh
  6399.         DX = port number
  6400.     CF set on error
  6401. Program: TES is a network serial port emulation program
  6402. SeeAlso: AH=A1h"TES"
  6403. --------S-14A1-------------------------------
  6404. INT 14 - 3com BAPI SERIAL I/O - DISCONNECT FROM PORT
  6405.     AH = A1h
  6406.     DH = session ID (00h for external session managment)
  6407. Return: AH = return code (00h,03h,07h,0Ah,0Bh) (see #0313)
  6408.     AL destroyed (Novell TELAPI.EXE)
  6409. SeeAlso: AH=A0h"BAPI"
  6410. --------S-14A1-------------------------------
  6411. INT 14 - Interconnections Inc. TES - GET LIST OF SESSIONS WITH STATUS
  6412.     AH = A1h
  6413. Return: CX = number of active sessions
  6414.     ES:SI -> status array (see #0314)
  6415. SeeAlso: AH=A2h"TES",AH=A3h"TES"
  6416.  
  6417. Format of Interconnections TES status array entry:
  6418. Offset    Size    Description    (Table 0314)
  6419.  00h    BYTE    status
  6420.  01h    WORD    offset of name
  6421. --------S-14A2-------------------------------
  6422. INT 14 - 3com BAPI SERIAL I/O - WRITE CHARACTER
  6423.     AH = A2h
  6424.     AL = character
  6425.     DH = session ID (00h for external session managment)
  6426. Return: AH = return code (00h,01h,03h,07h,0Ah,0Bh) (see #0313)
  6427. SeeAlso: AH=A0h"BAPI",AH=A3h"BAPI",AH=A4h"BAPI"
  6428. --------S-14A2-------------------------------
  6429. INT 14 - Interconnections Inc. TES - GET LIST OF SERVER NAMES
  6430.     AH = A2h
  6431. Return: CX = number of servers
  6432.     ES:SI -> array of offsets from ES for server names
  6433. SeeAlso: AH=A1h"TES"
  6434. --------S-14A3-------------------------------
  6435. INT 14 - 3com BAPI SERIAL I/O - READ CHARACTER
  6436.     AH = A3h
  6437.     DH = session ID (00h for external session managment)
  6438. Return: AH = return code (00h,02h,03h,07h,0Ah,0Bh) (see #0313)
  6439.     AL = character read or 00h if none available
  6440. SeeAlso: AH=A0h"BAPI",AH=A2h"BAPI",AH=A5h"BAPI",AH=A7h"BAPI"
  6441. --------S-14A3-------------------------------
  6442. INT 14 - Interconnections Inc. TES - START A NEW SESSION
  6443.     AH = A3h
  6444.     ES:SI -> ???
  6445. Return: CF clear if successful
  6446.         AX = 5445h ('TE')
  6447.         CX <> FFFFh
  6448.         DX = port number
  6449.     CF set on error
  6450. SeeAlso: AH=A1h"TES",AH=A4h"TES",AH=A6h"TES"
  6451. --------S-14A4-------------------------------
  6452. INT 14 - 3com BAPI SERIAL I/O - WRITE BLOCK
  6453.     AH = A4h
  6454.     CX = length of buffer in bytes
  6455.     DH = session ID (00h for external session managment)
  6456.     ES:BX -> buffer containing data
  6457. Return: AH = return code (00h,01h,03h,07h,0Ah,0Bh) (see #0313)
  6458.     CX = number of bytes actually sent
  6459. SeeAlso: AH=19h,AH=86h,AH=A0h"BAPI",AH=A5h"BAPI"
  6460. --------S-14A4-------------------------------
  6461. INT 14 - Interconnections Inc. TES - HOLD CURRENTLY ACTIVE SESSION
  6462.     AH = A4h
  6463.     ???
  6464. Return: ???
  6465. SeeAlso: AH=A3h"TES",AH=A5h"TES"
  6466. --------S-14A5-------------------------------
  6467. INT 14 - 3com BAPI SERIAL I/O - READ BLOCK
  6468.     AH = A5h
  6469.     CX = length of buffer
  6470.     DH = session ID (00h for external session managment)
  6471.     ES:BX -> buffer for data
  6472. Return: AH = return code (00h,02h,03h,07h,0Ah,0Bh) (see #0313)
  6473.     CX = number of bytes actually read
  6474. SeeAlso: AH=18h,AH=83h"COURIERS",AH=A0h"BAPI",AH=A3h"BAPI",AH=A4h"BAPI"
  6475. SeeAlso: AH=A7h"BAPI",AX=FF02h
  6476. --------S-14A5-------------------------------
  6477. INT 14 - Interconnections Inc. TES - RESUME A SESSION
  6478.     AH = A5h
  6479.     AL = session number
  6480. Return: ???
  6481. SeeAlso: AH=A4h"TES",AH=A6h"TES"
  6482. --------S-14A6-------------------------------
  6483. INT 14 - 3com BAPI SERIAL I/O - SEND SHORT BREAK
  6484.     AH = A6h
  6485.     DH = session ID (00h for external session managment)
  6486. Return: AH = return code (00h,03h,07h,0Ah,0Bh) (see #0313)
  6487. Desc:    generate a short break signal; if data delivery was turned off by the
  6488.       break, wait for the host to turn it on again
  6489. SeeAlso: AH=1Ah,AH=8Ah,AH=FAh,AH=A0h"BAPI"
  6490. --------S-14A6-------------------------------
  6491. INT 14 - Interconnections Inc. TES - DROP A SESSION
  6492.     AH = A6h
  6493.     AL = session number
  6494. Return: AH = status
  6495.         00h successful
  6496.         else error
  6497. SeeAlso: AH=A3h"TES",AH=A5h"TES"
  6498. --------S-14A7-------------------------------
  6499. INT 14 - 3com BAPI SERIAL I/O - READ STATUS
  6500.     AH = A7h
  6501.     DH = session ID (00h for external session managment)
  6502. Return: AH = return code (00h,03h,07h,0Ah,0Bh) (see #0313)
  6503.     CX = number of bytes available for reading
  6504. Note:    Novell TELAPI.EXE v4.01 always returns either 0 or 1 bytes available
  6505. SeeAlso: AH=A5h"BAPI"
  6506. --------S-14A7-------------------------------
  6507. INT 14 - Interconnections Inc. TES - SWITCH TO NEXT ACTIVE SESSION
  6508.     AH = A7h
  6509.     ???
  6510. Return: ???
  6511. SeeAlso: AH=A3h"TES",AH=A5h"TES"
  6512. --------S-14A8-------------------------------
  6513. INT 14 - Interconnections Inc. TES - SEND STRING TO COMMAND INTERPRETER
  6514.     AH = A8h
  6515.     AL = 00h no visible response
  6516.     ES:SI -> ASCIZ command
  6517. Return: ???
  6518. --------N-14A8-------------------------------
  6519. INT 14 - Novell TelAPI v4.01 - CONNECTION INFORMATION???
  6520.     AH = A8h
  6521.     DH = session ID???
  6522.     CH = subfunction
  6523.         02h ???
  6524.         0Dh ???
  6525.         0Fh ???
  6526.         10h ???
  6527.         11h ???
  6528.         28h ???
  6529.         else
  6530.         Return: AH = 09h (not supported)
  6531. Return: AH = return code (see #0313)
  6532.         00h successful
  6533.         CL = ??? (0/1/8) (subfunctions 02h,0Dh,0Fh,10h)
  6534.         CL = ??? (7Fh/FFh) (subfunction 28h)
  6535.         CX = ??? (subfunction 11h)
  6536. SeeAlso: AH=A9h"TelAPI"
  6537. --------N-14A9-------------------------------
  6538. INT 14 - Novell TelAPI v4.01 - CONNECTION CONTROL???
  6539.     AH = A9h
  6540.     DH = session ID???
  6541.     CH = subfunction
  6542.         02h ???
  6543.         0Dh ???
  6544.         0Fh ???
  6545.         10h ???
  6546.         11h ???
  6547.         28h ???
  6548.         else
  6549.         Return: AH = 09h (not supported)
  6550.     ???
  6551. Return: AH = return code (see #0313)
  6552.     ???
  6553. SeeAlso: AH=A8h"TelAPI",AH=E4h,INT 6B/AX=0600h
  6554. --------V-14AA01-----------------------------
  6555. INT 14 - DimVGA v2.0+ - INSTALLATION CHECK
  6556.     AX = AA01h
  6557. Return: AX = FFFFh if installed, unchanged
  6558.     BX = version (v1.5+ only), BH = major, BL = minor (v1.5 = 0105h)
  6559.     CX = resident segment (v3.1+)
  6560. Program: DimVGA is a public domain screen saver by Menno Pieters
  6561. SeeAlso: AX=AA02h,AX=AA03h,AX=AA06h,INT 11/AX=0225h/BX=6900h,INT 12"KEYBUI"
  6562. SeeAlso: INT 2D/AL=10h"Burnout Plus",INT 2F/AX=6400h,INT 2F/AH=93h
  6563. SeeAlso: INT 2F/AX=C000h"VGAsave",INT 2F/AX=C000h"AD-DOS",INT 2F/AX=C050h
  6564. SeeAlso: INT 2F/AX=E300h
  6565. Index:    screen saver;DimVGA
  6566. --------V-14AA02-----------------------------
  6567. INT 14 - DimVGA v2.0+ - SET TIME-OUT (DIMMING/BLANKING) PERIOD
  6568.     AX = AA02h
  6569.     BX = number of clock ticks
  6570. Return: AX = FFFFh
  6571. Note:    on screen modes with 256 or less colors DimVGA will dim the screen,
  6572.       when more than 256 colors can be used DimVGA will blank the screen.
  6573. SeeAlso: AX=AA01h,AX=AA03h,AX=AA04h,AX=AA06h
  6574. Index:    screen saver;DimVGA
  6575. --------V-14AA03-----------------------------
  6576. INT 14 - DimVGA v2.0+ - SET DIMMING FACTOR
  6577.     AX = AA03h
  6578.     BX = percentage remaining visible (1-99)
  6579. Return: AX = FFFFh
  6580. SeeAlso: AX=AA02h,AX=AA05h,AX=AA06h
  6581. Index:    screen saver;DimVGA
  6582. --------V-14AA04-----------------------------
  6583. INT 14 - DimVGA v2.0+ - GET TIME-OUT PERIOD
  6584.     AX = AA04h
  6585. Return: AX = FFFFh
  6586.     BX = current time-out in clock ticks
  6587. SeeAlso: AX=AA02h,AX=AA05h,AX=AA0Ah
  6588. Index:    screen saver;DimVGA
  6589. --------V-14AA05-----------------------------
  6590. INT 14 - DimVGA v2.0+ - GET DIMMING FACTOR
  6591.     AX = AA05h
  6592. Return: AX = FFFFh
  6593.     BX = current dimming factor
  6594. SeeAlso: AX=AA03h,AX=AA04h,AX=AA0Ah
  6595. Index:    screen saver;DimVGA
  6596. --------V-14AA06-----------------------------
  6597. INT 14 - DimVGA v2.0+ - DISABLE
  6598.     AX = AA06h
  6599. Return: AX = FFFFh
  6600. SeeAlso: AX=AA01h,AX=AA07h,AX=AA0Ah
  6601. Index:    screen saver;DimVGA
  6602. --------V-14AA07-----------------------------
  6603. INT 14 - DimVGA v2.0+ - ENABLE
  6604.     AX = AA07h
  6605. Return: AX = FFFFh
  6606. SeeAlso: AX=AA01h,AX=AA06h,AX=AA0Ah
  6607. Index:    screen saver;DimVGA
  6608. --------V-14AA08-----------------------------
  6609. INT 14 - DimVGA v2.0+ - DIM SCREEN 'MANUALLY'
  6610.     AX = AA08h
  6611. Return: AX = FFFFh
  6612. Note:    this function will dim the screen immediately, even if DimVGA is
  6613.       currently disabled
  6614. SeeAlso: AX=AA01h,AX=AA02h,AX=AA09h
  6615. Index:    screen saver;DimVGA
  6616. --------V-14AA09-----------------------------
  6617. INT 14 - DimVGA v2.0+ - UNDIM SCREEN 'MANUALLY'
  6618.     AX = AA09h
  6619. Return: AX = FFFFh
  6620. Note:    this function will undim the screen immediately, even if DimVGA is
  6621.       currently disabled
  6622. SeeAlso: AX=AA01h,AX=AA08h
  6623. Index:    screen saver;DimVGA
  6624. --------V-14AA0A-----------------------------
  6625. INT 14 - DimVGA v2.0+ - CHECK WHETHER ENABLED
  6626.     AX = AA0Ah
  6627. Return: AX = FFFFh
  6628.     BX = current state (0000h disabled, 0001h enabled)
  6629. SeeAlso: AX=AA01h,AX=AA06h,AX=AA07h
  6630. Index:    screen saver;DimVGA
  6631. --------V-14AA0B-----------------------------
  6632. INT 14 - DimVGA v2.1+ - SET HOTKEY
  6633.     AX = AA0Bh
  6634.     BH = shift state (see #0315)
  6635.     BL = keyboard scancode
  6636. Return: AX = FFFFh
  6637. SeeAlso: AX=AA01h,AX=AA0Ch
  6638. Index:    screen saver;DimVGA
  6639.  
  6640. Bitfields for DimVGA hotkey shift state:
  6641. Bit(s)    Description    (Table 0315)
  6642.  7-4    unused
  6643.  3    Alt key pressed
  6644.  2    Ctrl key pressed
  6645.  1    Left shift key pressed
  6646.  0    Right shift key pressed
  6647. --------V-14AA0C-----------------------------
  6648. INT 14 - DimVGA v2.1+ - GET HOTKEY
  6649.     AX = AA0Ch
  6650. Return: AX = FFFFh
  6651.     BH = shift state (see #0315)
  6652.     BL = keyboard scancode
  6653. SeeAlso: AX=AA01h,AX=AA0Bh
  6654. Index:    screen saver;DimVGA
  6655. --------V-14AA0D-----------------------------
  6656. INT 14 - DimVGA v3.0+ - SET MOUSE CHECK STATUS
  6657.     AX = AA0Dh
  6658.     BX = new mouse check status
  6659.         0000h mouse checking off
  6660.         0001h mouse checking on
  6661. Return: AX = FFFFh
  6662. Note:    before switching mouse checking on, a mouse driver should be
  6663.       found in memory. If no mouse driver is found, mouse checking
  6664.       should be switched off (resident DimVGA does not check by itself).
  6665. SeeAlso: AX=AA01h,AX=AA0Eh
  6666. Index:    screen saver;DimVGA
  6667. --------V-14AA0E-----------------------------
  6668. INT 14 - DimVGA v3.0+ - GET MOUSE CHECK STATUS
  6669.     AX = AA0Eh
  6670. Return: BX = mouse check status (0000h disabled, 0001h enabled)
  6671. SeeAlso: AX=AA01h,AX=AA0Dh
  6672. Index:    screen saver;DimVGA
  6673. --------V-14AA0F-----------------------------
  6674. INT 14 - DimVGA v3.4 - SET LOCKING STATUS
  6675.     AX = AA0Fh
  6676.     BX = locking status
  6677.         0000h disabled
  6678.         0001h enabled
  6679. Return: AX = FFFFh
  6680. SeeAlso: AX=AA01h,AX=AA0Dh,AX=AA10h
  6681. Index:    screen saver;DimVGA
  6682. --------V-14AA10-----------------------------
  6683. INT 14 - DimVGA v3.4 - GET MOUSE CHECK STATUS
  6684.     AX = AA10h
  6685. Return: BX = locking status (0000h disabled, 0001h enabled)
  6686. SeeAlso: AX=AA01h,AX=AA0Dh,AX=AA0Fh
  6687. Index:    screen saver;DimVGA
  6688. ----------14AD-------------------------------
  6689. INT 14 - IBM SurePath BIOS - Officially "Private" Function
  6690.     AH = ADh
  6691. SeeAlso: AH=AEh"IBM",AH=AFh"IBM"
  6692. ----------14AE-------------------------------
  6693. INT 14 - IBM SurePath BIOS - Officially "Private" Function
  6694.     AH = AEh
  6695. SeeAlso: AH=ADh"IBM",AH=AFh"IBM"
  6696. ----------14AF-------------------------------
  6697. INT 14 - IBM SurePath BIOS - Officially "Private" Function
  6698.     AH = AFh
  6699. SeeAlso: AH=ADh"IBM",AH=AEh"IBM"
  6700. --------S-14AF00BXAAAA-----------------------
  6701. INT 14 - 3com BAPI SERIAL I/O - INSTALLATION CHECK
  6702.     AX = AF00h
  6703.     BX = AAAAh
  6704. Return: AX = AF01h if installed
  6705.         BH = protocol type (if BX=AAAAh on entry)
  6706.         01h NetManage TCP/IP
  6707.         BL = version for protocol type (if BX=AAAAh on entry)
  6708. Note:    early versions of the BAPI and the ROM BIOS simply destroy AX; this
  6709.       behavior is used to determine whether the newer functions (AH=B0h,
  6710.       AH=B1h,etc) are available
  6711. SeeAlso: AH=A0h"BAPI"
  6712. --------S-14B0-------------------------------
  6713. INT 14 - 3com BAPI SERIAL I/O - EN/DISABLE "ENTER COMMAND MODE" (ECM) CHARACTER
  6714.     AH = B0h
  6715.     AL = new state (00h disabled, 01h enabled)
  6716. Return: AH = return code (00h,07h,0Ah) (see #0313)
  6717. Note:    disabling the ECM character allows applications to send data which
  6718.       includes the ECM character
  6719. SeeAlso: AX=AF00h"BAPI",AH=B1h,AH=B2h
  6720. --------S-14B1-------------------------------
  6721. INT 14 - 3com BAPI SERIAL I/O - ENTER COMMAND MODE
  6722.     AH = B1h
  6723. Return: AH = return code (00h,07h,0Ah) (see #0313)
  6724. Desc:    provide a means for the application or terminal emulator to perform
  6725.       the same action normally caused by the ECM character
  6726. SeeAlso: AH=B0h,AH=B2h
  6727. --------S-14B2-------------------------------
  6728. INT 14 - 3com BAPI SERIAL I/O - GET ECM WATCH STATE
  6729.     AH = B2h
  6730. Return: AH = return code (00h,07h,0Ah) (see #0313)
  6731.     AL = watch flag (00h disabled, 01h enabled)
  6732. Desc:    determine whether the ECM character is enabled
  6733. SeeAlso: AH=B0h,AH=B1h
  6734. --------S-14B3-------------------------------
  6735. INT 14 - 3com BAPI SERIAL I/O - GET/SET CONFIGURATION INFO
  6736.     AH = B3h
  6737.     AL = direction (00h get, 01h set)
  6738.     DH = session ID (00h for external session managment)
  6739.     DL = configuration item (00h = end-of-line mapping)
  6740.     CX = new configuration item value (if AL=01h)
  6741.         ---if DL=00h---
  6742.         CH = application EOL type (app to Telnet client)
  6743.         01h application will send lone CR
  6744.         02h application will send CR-? pair
  6745.         CL = driver EOL type (Telnet client to Telnet server)
  6746.         01h driver should send CR-NUL pair
  6747.         02h driver should send CR-LF pair
  6748. Return: AH = return code (00h,03h,09h-0Bh) (see #0313)
  6749.     ---if AL=00h---
  6750.     CX = configuration item value (above)
  6751. SeeAlso: AH=B2h
  6752. --------N-14E0-------------------------------
  6753. INT 14 - TelAPI - "telopen" - CREATE TELNET CONNECTION (BLOCKING)
  6754.     AH = E0h
  6755.     BX = port number to connect with (default 0017h used if <= 0)
  6756.     CX:DX = Internet address of remote host
  6757.     DS:DI -> 2-byte remote host (session) identifier
  6758.     ES:SI -> 1700-byte buffer for Telnet state record
  6759.         0000h:0000h to use TelAPI internally-allocated space
  6760. Return: AX = status (0000h-0009h,FED3h,FF37h,FFBDh,FFC0h,FFCDh) (see #0316)
  6761.     ES:SI buffer filled with state record
  6762.     ES:SI -> internally-allocated state record in some versions
  6763. Note:    the remote host identifier may be used to refer to this connection
  6764. SeeAlso: AH=E1h,AH=ECh,AX=FF00h
  6765.  
  6766. (Table 0316)
  6767. Values for TelAPI status:
  6768.  0000h-7FFFh    successful (session number)
  6769.  FED3h    (-301)    no session allocated, or out of TelAPI data space
  6770.  FF37h    (-201)    all sessions in use
  6771.  FFBDh    (-67)    unknown hostname
  6772.  FFC0h    (-64)    host not functioning
  6773.  FFC3h    (-61)    connection attempt refused
  6774.  FFC4h    (-60)    connection attempt timed out
  6775.  FFC8h    (-56)    socket already connected
  6776.  FFCDh    (-51)    network is unreachable
  6777.  FFDDh    (-35)    operation would block
  6778. --------S-14E000-----------------------------
  6779. INT 14 - MX5 Extended FOSSIL - GET MNP STATUS BLOCK
  6780.     AX = E000h
  6781.     DX = port number (0-3)
  6782. Return: ES:BX -> status block (see #0317)
  6783. Program: MX5 is a FOSSIL driver by MagicSoft which emulates MNP Level 5, and
  6784.       ships with the MTEZ terminal program as MTEMNP.DRV (a TSR despite
  6785.       the .DRV extension)
  6786. SeeAlso: AX=E006h
  6787.  
  6788. Format of MX5 Extended FOSSIL status block:
  6789. Offset    Size    Description    (Table 0317)
  6790.  00h    BYTE    flag: active (00h no, 01h yes)
  6791.  01h    BYTE    MNP level (2,4,5)
  6792.  02h    BYTE    series ID from remote MNP
  6793.  03h    DWORD    total packets transmitted
  6794.  07h    DWORD    duplicate packets transmitted
  6795.  0Bh    DWORD    maximum speed
  6796.  0Fh    DWORD    total packets received
  6797.  13h    DWORD    duplicate packets received
  6798.  17h    DWORD    maximum speed
  6799. --------S-14E001-----------------------------
  6800. INT 14 - MX5 Extended FOSSIL - GET/SET MNP LEVEL
  6801.     AX = E001h
  6802.     BH = function
  6803.         00h get MNP level
  6804.         01h set MNP level
  6805.         BL = new level (00h none, 02h/04h/05h MNP level N)
  6806.     DX = port number (0-3)
  6807. Return: BL = MNP level
  6808. SeeAlso: AX=E002h,AX=E003h,AX=E004h,AX=E006h
  6809. --------S-14E002-----------------------------
  6810. INT 14 - MX5 Extended FOSSIL - GET/SET MNP ANSWER/ORIGINATE MODE
  6811.     AX = E002h
  6812.     BH = function
  6813.         00h get answer/originate mode
  6814.         01h set mode
  6815.         BL = new mode (00h originate [default], 01h answer)
  6816.     DX = port number (0-3)
  6817. Return: BL = answer/originate mode
  6818. SeeAlso: AX=E001h,AX=E003h,AX=E006h
  6819. --------S-14E003-----------------------------
  6820. INT 14 - MX5 Extended FOSSIL - GET/SET MNP WAIT TICKS
  6821.     AX = E003h
  6822.     BH = function
  6823.         00h get wait ticks
  6824.         01h set wait ticks
  6825.         BL = MNP wait ticks (default 0Eh)
  6826.     DX = port number (0-3)
  6827. Return: BL = wait ticks
  6828. SeeAlso: AX=E001h,AX=E002h,AX=E006h
  6829. --------S-14E004-----------------------------
  6830. INT 14 - MX5 Extended FOSSIL - GET/SET MNP CONNECT SOUND LEVEL
  6831.     AX = E004h
  6832.     BH = function
  6833.         00h get sound level
  6834.         01h set sound level
  6835.         BL = new sound level (00h off, 01h on [default])
  6836.     DX = port number
  6837. Return: BL = sound state
  6838. Desc:    specify whether MX5 should generate beeps after an MNP connection
  6839.       (three high beeps if successful, high then low on connection failure)
  6840. SeeAlso: AX=E002h,AX=E006h
  6841. --------S-14E005-----------------------------
  6842. INT 14 - MX5 Extended FOSSIL - UNINSTALL
  6843.     AX = E005h
  6844. Return: BX = segment of MX5's memory block or 0000h on failure
  6845. Note:    caller must free the returned memory block to complete the uninstall
  6846. SeeAlso: AX=E006h
  6847. --------S-14E006BX0000-----------------------
  6848. INT 14 - MX5 Extended FOSSIL - INSTALLATION CHECK
  6849.     AX = E006h
  6850.     BX = 0000h
  6851. Return: BX = 4D58h ('MX') if installed
  6852.         AH = major version
  6853.         AL = minor version
  6854. SeeAlso: AX=E000h,AX=E001h,AX=E005h,AX=E007h
  6855. --------S-14E007-----------------------------
  6856. INT 14 - MX5 Extended FOSSIL - WAIT SPECIFIED NUMBER OF TICKS
  6857.     AX = E007h
  6858.     CX = number of ticks to wait
  6859. Return: nothing
  6860. SeeAlso: AX=E006h
  6861. --------N-14E1-------------------------------
  6862. INT 14 - TelAPI - "telclose" - TERMINATE TELNET CONNECTION
  6863.     AH = E1h
  6864.     BX = connection ID
  6865. Return: AX = status (0000h,FFF7h,maybe others) (see #0316)
  6866. Note:    flushes and releases all buffers and data space used by the connection
  6867. SeeAlso: AH=E0h,AH=E6h,AX=FF00h
  6868. --------N-14E2-------------------------------
  6869. INT 14 - TelAPI - "telread" - BUFFERED READ
  6870.     AH = E2h
  6871.     BX = connection ID (see AH=E0h"TelAPI")
  6872.     CX = length of buffer in bytes
  6873.     ES:SI -> buffer for data
  6874. Return: AX > 0000h number of characters actually read
  6875.     AX = 0000h host has closed connection
  6876.     AX < 0000h error code (see #0316)
  6877. Note:    translates CRLF into local EOL if the connection is in ASCII mode,
  6878.       negotiates various Telnet options, and immediately executes several
  6879.       different Telnet action commands
  6880. SeeAlso: AH=07h"TelAPI",AH=E3h,AH=E6h,AX=FF00h,INT 6B/AH=01h
  6881. --------N-14E3-------------------------------
  6882. INT 14 - TelAPI - "telwrite" - BUFFERED WRITE
  6883.     AH = E3h
  6884.     BX = connection ID
  6885.     CX = length of buffer in bytes
  6886.     ES:SI -> buffer containing data
  6887. Return: AX > 0000h number of characters actually written
  6888.     AX < 0000h error code (see #0316)
  6889. Note:    translates local EOL into CRLF if the connection is in ASCII mode,
  6890.       sends the appropriate Telnet commands for the characters selected
  6891.       for IP, AYT, AO, EC, EL, and Break
  6892. SeeAlso: AH=06h"TelAPI",AH=E2h,AH=E6h,AX=FF00h,INT 6B/AH=00h
  6893. --------N-14E4-------------------------------
  6894. INT 14 - TelAPI - "telioctl" - CONNECTION CONTROL
  6895.     AH = E4h
  6896.     BX = connection ID (see AH=E0h"TelAPI")
  6897.     CX = Telnet command/option identifier (see #0319)
  6898.     ES:SI -> buffer containing command/option argument (see #0318)
  6899. Return: AX = status (0000h, etc.) (see #0316)
  6900. Desc:    start filter control, initiate Telnet option negotiation, or get filter
  6901.       control status
  6902. SeeAlso: AH=A9h,AH=E6h,AX=FF00h,INT 6B/AX=0600h
  6903.  
  6904. Format of TelAPI Telnet command/option argument:
  6905. Offset    Size    Description    (Table 0318)
  6906.  00h  5 WORD    numeric arguments
  6907.  0Ah    DWORD    -> ASCIZ string
  6908. SeeAlso: #0319
  6909.  
  6910. (Table 0319)
  6911. Values for TelAPI Telnet command/option identifier:
  6912.  01h    ASCII        args: none
  6913.  02h    BINARY        args: none
  6914.  03h    LOCALECHO    args: none        client echos data
  6915.  04h    REMOTEECHO    args: none        server echos data
  6916.  05h    SGA        args: none        Suppress Go-Ahead signal
  6917.  07h    CHARMODE    args: none        no line-buffering
  6918.  08h    LINEMODE    args: -> erase-line ch    perform line-buffering
  6919.  09h    RECVEOL        args: EOL type
  6920.  0Ah    SENDEOL        args: EOL type
  6921.  0Bh    EOR        args: none        enable end-of-record sequence
  6922.  0Dh    BREAK        args: -> break char
  6923.  0Eh    VERBOSE        args: verbosity        display Telnet negotiations?
  6924.  0Fh    AYT        args: -> AYT escape ch
  6925.  10h    AO        args: -> AO escape char
  6926.  11h    IP        args: -> IP escape char
  6927.  12h    EC        args: -> escape char
  6928.  13h    EL        args: -> escape char
  6929.  14h    STATUS        args: type; returns data in structure
  6930.  18h    TERMTYPE    args: -> terminal type
  6931.  19h    ATTACHPORT    args: port number ; returns session number
  6932.  1Bh    TRANSMIT_EOR    args: EOR enabled    append EOR to every telwrite?
  6933. SeeAlso: #0318
  6934. --------N-14E5-------------------------------
  6935. INT 14 - TelAPI - "telreset" - RESET ALL CONNECTIONS
  6936.     AH = E5h
  6937. Return: AX = status (0000h,other) (see also #0316)
  6938.         FFFFh unable to reset
  6939. Desc:    close all sessions and reset TelAPI to defaults
  6940. SeeAlso: AH=E1h,AH=E6h,AX=FF00h
  6941. --------N-14E6-------------------------------
  6942. INT 14 - TelAPI - "telunload" - UNINSTALL
  6943.     AH = E6h
  6944. Return: AX = status
  6945.         0000h successful
  6946.         FFFFh unable to uninstall
  6947. Notes:    TelAPI also supports the NASI/NACS and NCSI APIs on INT 6B
  6948.     this function invokes AH=E5h internally
  6949. SeeAlso: AH=E5h,AX=FF00h,INT 6B/AH=00h,INT 6B/AH=10h
  6950. --------N-14E7-------------------------------
  6951. INT 14 - TelAPI - "tellist" - GET TELNET SESSION LIST
  6952.     AH = E7h
  6953.     ES:SI -> 10-word buffer for session list
  6954. Return: AX = 0000h (successful)
  6955.     ES:SI buffer filled
  6956. Desc:    determine, for each of the ten allowable sessions, whether the session
  6957.       is currently available
  6958. Note:    each word in the buffer is filled with either 0000h to indicate that
  6959.      the corresponding sesion is unavailable, or 0001h if available
  6960. SeeAlso: AH=E0h,AH=E5h,AX=FF00h
  6961. --------N-14E8-------------------------------
  6962. INT 14 - TelAPI - "telattach" - ATTACH COM PORT TO/FROM TELNET SESSION
  6963.     AH = E8h
  6964.     BX = connection ID (see AH=E0h"TelAPI")
  6965.     CX = serial port number (0000h-0003h = COM1-COM4)
  6966. Return: AX = status
  6967.         0000h successful
  6968.         FFFFh failed
  6969. SeeAlso: AH=E0h,AH=E9h,AX=FF00h
  6970. --------N-14E9-------------------------------
  6971. INT 14 - TelAPI - "telportosn" - GET SESSION NUMBER FOR COM PORT
  6972.     AH = E9h
  6973.     DX = serial port number (0000h-0003h = COM1-COM4)
  6974. Return: AX >= 0000h session number
  6975.     AX < 0000h error code (see #0316)
  6976. SeeAlso: AH=E0h,AH=E8h,AH=EAh,AX=FF00h
  6977. --------N-14EA-------------------------------
  6978. INT 14 - TelAPI - "telstatus" - GET TELNET CONNECTION STATUS INFORMATION
  6979.     AH = EAh
  6980.     BX = connection ID (see AH=E0h"TelAPI")
  6981.     ES:SI -> buffer for status info (see #0320)
  6982. Return: AX = status (0000h,FFFFh,etc.)
  6983. SeeAlso: AH=E9h,AH=EBh,AX=FF00h
  6984.  
  6985. Format of TelAPI Telnet connection status information:
  6986. Offset    Size    Description    (Table 0320)
  6987.  00h  4 BYTEs    remote host IP address
  6988.  04h 20 BYTEs    reserved
  6989.  18h    WORD    local port number
  6990.  1Ah    BYTE    connection mode (00h = ASCII, 01h = Binary)
  6991.  1Bh    BYTE    echo flag (00h local, 01h remote)
  6992.  1Ch    BYTE    SGA flag (00h will, 01h won't)
  6993.  1Dh    BYTE    EOR negotation flag (00h do negotiate, 01h don't)
  6994.  1Eh    BYTE    buffering (00h line mode, 01h character mode)
  6995.  1Fh    BYTE    reserved
  6996.  20h    BYTE    verbose flag (00h no, 01h verbose mode)
  6997.  21h    BYTE    received EOL (00h no xlat, 01h CR, 02h LF, 03h CRLF)
  6998.  22h    BYTE    sent EOL (00h no translation, 01h CR, 02h LF)
  6999.  23h    BYTE    break character
  7000.  24h    BYTE    IP escape character
  7001.  25h    BYTE    AO escape character
  7002.  26h    BYTE    AYT escape character
  7003.  27h    BYTE    EC escape character
  7004.  28h    BYTE    EL escape character
  7005.  29h 41 BYTEs    ASCIZ Telnet-negotiated terminal type
  7006.  52h  9 BYTEs    session ID
  7007. SeeAlso: #0321
  7008. --------N-14EB-------------------------------
  7009. INT 14 - TelAPI - "telname" - GET AVAILABLE/INUSE STATUS FOR ALL SESSIONS
  7010.     AH = EBh
  7011.     ES:SI -> buffer for session statuses (see #0321)
  7012. Return: ES:SI buffer filled
  7013. SeeAlso: AH=E9h,AH=EAh,AX=FF00h
  7014.  
  7015. Format of TelAPI session status information [array]:
  7016. Offset    Size    Description    (Table 0321)
  7017.  00h    BYTE    session state (00h available, 01h connected)
  7018.  01h  9 BYTEs    session ID if connected
  7019.  0Ah    WORD    attached COM port if connected, FFFFh if not
  7020. SeeAlso: #0320
  7021. --------N-14EC-------------------------------
  7022. INT 14 - TelAPI - "telnblkopen" - CREATE TELNET CONNECTION (NON-BLOCKING)
  7023.     AH = ECh
  7024.     BX = port number to connect with (default 0017h used if <= 0)
  7025.     CX:DX = Internet address of remote host
  7026.     DS:DI -> 2-byte remote host (connection) identifier
  7027.     ES:SI -> 1700-byte buffer for Telnet state record
  7028.         0000h:0000h to use TelAPI internally-allocated space
  7029. Return: AX = status (0000h-0009h,FED3h,FF37h,FFBDh,FFC0h,FFCDh) (see #0316)
  7030.     ES:SI buffer filled with state record
  7031.     ES:SI -> internally-allocated state record in some versions
  7032. Notes:    the remote host identifier may be used to refer to this connection
  7033.     this function returns immediately; use AH=EDh to check whether the
  7034.       connection has been established yet
  7035.     this function is not supported by the Microdyne TelAPI v3.7
  7036. SeeAlso: AH=E0h"TelAPI",AH=EDh,AX=FF00h
  7037. --------N-14ED-------------------------------
  7038. INT 14 - TelAPI - "telpoll" - POLL TELNET SESSION FOR CONNECTION COMPLETION
  7039.     AH = EDh
  7040.     BX = connection ID (see AH=ECh)
  7041. Return: AX = status (0000h,0001h,FFFFh,etc.) (see also #0316)
  7042.         0000h session now connected
  7043.         0001h connection still in progress
  7044. Note:    this function is not supported by the Microdyne TelAPI v3.7
  7045. SeeAlso: AH=EDh,AX=FF00h
  7046. --------a-14F0F0-----------------------------
  7047. INT 14 - ASAP v1.0 - ???
  7048.     AX = F0F0h
  7049.     DX = ???
  7050.     ???
  7051. Return: ???
  7052. Program: ASAP (Automatic Screen Access Program) is a shareware screen reader
  7053.       by MicroTalk
  7054. SeeAlso: AX=F0F1h
  7055. --------a-14F0F1DX0000-----------------------
  7056. INT 14 - ASAP v1.0 - INSTALLATION CHECK
  7057.     AX = F0F1h
  7058.     DX = 0000h
  7059. Return: DX = segment of resident code
  7060.         0000h if not installed
  7061. Program: ASAP (Automatic Screen Access Program) is a shareware screen reader
  7062.       by MicroTalk
  7063. SeeAlso: AX=F0F0h,INT 10/AX=3800h
  7064. --------S-14F4FF-----------------------------
  7065. INT 14 - IBM/Yale EBIOS SERIAL I/O - INSTALLATION CHECK
  7066.     AX = F4FFh
  7067.     DX = port (00h-03h)
  7068. Return: CF clear if present
  7069.         AX = 0000h
  7070.     CF set if not present
  7071.         AX <> 0000h
  7072. SeeAlso: AH=36h"ComShare",AH=F9h,AH=FCh
  7073. --------S-14F9-------------------------------
  7074. INT 14 - IBM/Yale EBIOS SERIAL I/O - REGAIN CONTROL
  7075.     AH = F9h
  7076.     DX = port (00h-03h)
  7077. Return: nothing
  7078. SeeAlso: AX=F4FFh
  7079. --------S-14FA-------------------------------
  7080. INT 14 - IBM/Yale EBIOS SERIAL I/O - SEND BREAK
  7081.     AH = FAh
  7082.     DX = port (00h-03h)
  7083. Return: nothing
  7084. SeeAlso: AH=07h"MBBIOS",AH=1Ah,AH=8Ah
  7085. --------S-14FB-------------------------------
  7086. INT 14 - IBM/Yale EBIOS SERIAL I/O - SET OUTGOING MODEM SIGNALS
  7087.     AH = FBh
  7088.     AL = modem control register (see #0253 at AH=05h"SERIAL")
  7089.     DX = port (00h-03h)
  7090. Return: nothing
  7091. SeeAlso: AH=05h"SERIAL"
  7092. --------S-14FC-------------------------------
  7093. INT 14 - IBM/Yale EBIOS SERIAL I/O - READ CHARACTER, NO WAIT
  7094.     AH = FCh
  7095.     DX = port (00h-03h)
  7096. Return: AH = RS232 status bits (see #0223 at AH=03h)
  7097.     AL = character
  7098. SeeAlso: AH=02h,AH=0Ch,AX=FF02h
  7099. --------S-14FD02-----------------------------
  7100. INT 14 - IBM/Yale EBIOS SERIAL I/O - READ STATUS
  7101.     AX = FD02h
  7102. Return: CX = number of characters available
  7103. --------N-14FF00-----------------------------
  7104. INT 14 - TelAPI - "telcheck" - INSTALLATION CHECK
  7105.     AX = FF00h
  7106. Return: AX = 00FFh if installed
  7107.         BX = version number * 100 (decimal)
  7108. SeeAlso: AH=E6h,AX=F4FFh
  7109. --------S-14FF01-----------------------------
  7110. INT 14 - IBM/Yale EBIOS SERIAL I/O - SET SEND BUFFER
  7111.     AX = FF01h
  7112.     CX = length of buffer (0000h to cancel buffer assignment)
  7113.     DX = port (00h-03h)
  7114.     ES:BX -> send buffer
  7115. Return: nothing
  7116. SeeAlso: AH=18h,AH=83h"COURIERS",AH=A5h"BAPI",AH=FCh,AX=FF02h
  7117. --------S-14FF02-----------------------------
  7118. INT 14 - IBM/Yale EBIOS SERIAL I/O - SET RECEIVE BUFFER
  7119.     AX = FF02h
  7120.     CX = length of buffer (0000h to cancel buffer assignment)
  7121.     DX = port (00h-03h)
  7122.     ES:BX -> receive buffer
  7123. Return: nothing
  7124. SeeAlso: AH=18h,AH=83h"COURIERS",AH=A5h"BAPI",AH=FCh,AX=FF01h
  7125. --------S-14FFF8-----------------------------
  7126. INT 14 - COMM-DRV v14.0 - SET BAUD RATE DIVISOR
  7127.     AX = FFF8h
  7128.     BX = card type (sub-device number)
  7129.     CX = new baudrate divisor
  7130.     DX = index to baud rate
  7131. Return: AH bit 7 set on error
  7132.     AH bit 7 clear if successful
  7133. Program: COMM-DRV is a universal serial communications driver by Willies'
  7134.       Computer Software Company, which supports standard INT 14 and
  7135.       FOSSIL calls as well as its own interfaces
  7136. SeeAlso: AX=8000h"COMM-DRV"
  7137. --------S-14FFFB-----------------------------
  7138. INT 14 - COMM-DRV v14.0 - GET HIGHEST ALLOWED PORT NUMBER
  7139.     AX = FFFBh
  7140.     DX = port number
  7141. Return: AH bit 7 set on error
  7142.     AH bit 7 clear if successful
  7143.         BX = highest port number
  7144. --------S-14FFFC-----------------------------
  7145. INT 14 - COMM-DRV v14.0 - GET INT 14 FLAGS
  7146.     AX = FFFCh
  7147.     DX = port number
  7148. Return: AH bit 7 set on error
  7149.     AH bit 7 clear if successful
  7150.         BX = flags (see #0322)
  7151. SeeAlso: AX=FFFDh
  7152.  
  7153. Bitfields for INT 14h flags:
  7154. Bit(s)    Description    (Table 0322)
  7155.  0    port active for INT 14h
  7156.  1    interface behaving like a FOSSIL driver
  7157. --------S-14FFFD-----------------------------
  7158. INT 14 - COMM-DRV v14.0 - SET INT 14 FLAGS
  7159.     AX = FFFDh
  7160.     BX = flags (see #0322)
  7161.     DX = port number
  7162. Return: AH bit 7 set on error
  7163.     AH bit 7 clear if successful
  7164. SeeAlso: AX=FFFCh
  7165. --------S-14FFFE-----------------------------
  7166. INT 14 - COMM-DRV v14.0 - RESTORE INT 14 VECTOR TO ORIGINAL
  7167.     AX = FFFEh
  7168. Return: AH bit 7 set on error
  7169.     AH bit 7 clear if successful
  7170. --------S-14FFFF-----------------------------
  7171. INT 14 - COMM-DRV v14.0 - GET INT 14 INFORMATION AREA
  7172.     AX = FFFFh
  7173.     BX:SI -> DWORD buffer for address of information area (see #0323)
  7174.           (initialized to zeros)
  7175. Return: BX:SI buffer filled with nonzero value if installed
  7176. Program: COMM-DRV is a universal serial communications driver by Willies'
  7177.       Computer Software Company, which supports standard INT 14 and
  7178.       FOSSIL calls as well as its own interfaces
  7179. Index:    installation check;COMM-DRV
  7180.  
  7181. Format of COMM-DRV information area:
  7182. Offset    Size    Description    (Table 0323)
  7183.  00h  8 BYTEs    signature "COMM-DRV"
  7184.  08h  2 BYTEs    00h,00h
  7185.  0Ah    DWORD    -> direct address mapping table
  7186.  0Eh    DWORD    previous INT 14 vector
  7187. --------t-15---------------------------------
  7188. INT 15 - Microsoft TSR Specification
  7189.     No additional information available at this time.
  7190. --------B-1500-------------------------------
  7191. INT 15 - CASSETTE - TURN ON TAPE DRIVE'S MOTOR (PC and PCjr only)
  7192.     AH = 00h
  7193. Return: CF set on error
  7194.         AH = 86h no cassette present
  7195.     CF clear if successful
  7196. SeeAlso: AH=01h"CASSETTE"
  7197. --------M-1500-------------------------------
  7198. INT 15 - Amstrad PC1512 - GET AND RESET MOUSE COUNTS
  7199.     AH = 00h
  7200. Return: CX = signed X count
  7201.     DX = signed Y count
  7202. --------O-1500-------------------------------
  7203. INT 15 - VMiX v2+ - INSTALLATION CHECK
  7204.     AH = 00h
  7205. Return: DX = 0798h if installed
  7206.         AX = version (AH = major, AL = minor)
  7207. --------T-1500-------------------------------
  7208. INT 15 - MultiDOS Plus - GIVE UP TIME SLICE
  7209.     AH = 00h
  7210. Return: nothing
  7211. Note:    if issued by the highest-priority task while MultiDOS is using
  7212.       priority-based rather than round-robin scheduling, control will be
  7213.       returned to the caller immediately
  7214. SeeAlso: AH=03h"MultiDOS",AX=1000h
  7215. --------B-1501-------------------------------
  7216. INT 15 - CASSETTE - TURN OFF TAPE DRIVE'S MOTOR (PC and PCjr only)
  7217.     AH = 01h
  7218. Return: CF set on error
  7219.         AH = 86h no cassette present
  7220.     CF clear if successful
  7221. SeeAlso: AH=00h"CASSETTE"
  7222. --------b-1501-------------------------------
  7223. INT 15 - Amstrad PC1512 - WRITE DATA TO NON-VOLATILE RAM
  7224.     AH = 01h
  7225.     AL = NVRAM location (00h to 3Fh) (see #0324)
  7226.     BL = NVRAM data value
  7227. Return: AH = return code
  7228.         00h OK
  7229.         01h address bad
  7230.         02h write error
  7231. SeeAlso: AH=02h"Amstrad"
  7232.  
  7233. Format of Amstrad NVRAM:
  7234. Offset    Size    Description    (Table 0324)
  7235.  00h    BYTE    time of day: seconds
  7236.  01h    BYTE    alarm time: seconds
  7237.  02h    BYTE    time of day: minutes
  7238.  03h    BYTE    alarm time: minutes
  7239.  04h    BYTE    time of day: hours
  7240.  05h    BYTE    alarm time: hours
  7241.  06h    BYTE    day of week, 1 = Sunday
  7242.  07h    BYTE    day of month
  7243.  08h    BYTE    month
  7244.  09h    BYTE    year mod 100
  7245.  0Ah    BYTE    RTC status register A (see #0325)
  7246.  0Bh    BYTE    RTC status register B (see #0326)
  7247.  0Ch    BYTE    RTC status register C (read-only) (see #0327)
  7248.  0Dh    BYTE    RTC status register D
  7249.         bit 7: battery good
  7250.  0Eh  6 BYTEs    time and date machine last used
  7251.  14h    BYTE    user RAM checksum
  7252.  15h    WORD    Enter key scancode/ASCII code
  7253.  17h    WORD    Forward delete key scancode/ASCII code
  7254.  19h    WORD    Joystick fire button 1 scancode/ASCII code
  7255.  1Bh    WORD    Joystick fire button 2 scancode/ASCII code
  7256.  1Dh    WORD    mouse button 1 scancode/ASCII code
  7257.  1Fh    WORD    mouse button 2 scancode/ASCII code
  7258.  21h    BYTE    mouse X scaling factor
  7259.  22h    BYTE    mouse Y scaling factor
  7260.  23h    BYTE    initial VDU mode and drive count
  7261.  24h    BYTE    initial VDU character attribute
  7262.  25h    BYTE    size of RAM disk in 2K blocks
  7263.  26h    BYTE    initial system UART setup byte
  7264.  27h    BYTE    initial external UART setup byte
  7265.  28h 24 BYTEs    available for user application
  7266. Note:    bytes 00h-0Dh are the same on the IBM AT as they are used/updated by
  7267.       the clock chip
  7268.  
  7269. Bitfields for RTC status register A:
  7270. Bit(s)    Description    (Table 0325)
  7271.  7    set if date/time being updated
  7272.  6-4    time base speed, default 010 = 32768 Hz
  7273.  3-0    interrupt rate selection, default 0110 = 1024 Hz
  7274. SeeAlso: #0324
  7275.  
  7276. Bitfields for RTC status register B:
  7277. Bit(s)    Description    (Table 0326)
  7278.  7    clear if normal update, set if abort update
  7279.  6    periodic interrupt enable
  7280.  5    alarm interrupt enable
  7281.  4    update end interrupt enable
  7282.  3    square wave enable
  7283.  2    date mode (clear = BCD, set = binary)
  7284.  1    24-hour format
  7285.  0    daylight saving time enable
  7286. SeeAlso: #0324
  7287.  
  7288. Bitfields for RTC status register C:
  7289. Bit(s)    Description    (Table 0327)
  7290.  7    IRQF flag
  7291.  6    PF flag
  7292.  5    AF flag
  7293.  4    UF flag
  7294. SeeAlso: #0324
  7295. --------O-1501-------------------------------
  7296. INT 15 - VMiX - "sys_chanreq" - I/O CHANNEL OBJECT MANAGER
  7297.     AH = 01h
  7298.     STACK:    WORD    object ID of requestor
  7299.         DWORD    pointer to ASCIZ name of requested method
  7300.             "assign" assign channel to object
  7301.             "deassign" deassign channel
  7302.             "cursor" set cursor on/off
  7303.             "init" initialize comm port
  7304.             "open" open I/O channel
  7305.             "position" set cursor position
  7306.             "receive" get buffered packet from comm port
  7307.             "send" send buffered packet to comm port
  7308.             "vio" set current virtual I/O to specified channel
  7309.             "window" make window at cursor position
  7310.         ---if "assign"---
  7311.          WORD    object UID
  7312.          WORD    caller UID/PID
  7313.          DWORD    CSL with port
  7314.         ---if "deassign"---
  7315.          WORD    channel ID
  7316.         ---if "cursor"---
  7317.          WORD    channel ID (must be a SRCSINK)
  7318.          WORD    new state (0000h off, 0001h on)
  7319.         ---if "init"---
  7320.          WORD    channel ID (must be a SRCSINK)
  7321.          WORD    comm port number (00h-03h)
  7322.          WORD    UART init code
  7323.         ---if "open"---
  7324.          WORD    channel ID
  7325.         ---if "position"---
  7326.          WORD    channel ID (must be a SRCSINK)
  7327.          WORD    position (high byte = row, low byte = column)
  7328.         ---if "receive"---
  7329.          DWORD    pointer to buffer
  7330.         ---if "send"---
  7331.          WORD    length of buffer
  7332.          DWORD    pointer to buffer
  7333.         ---if "vio"---
  7334.          WORD    channel ID (must be a SRCSINK)
  7335.         ---if "window"---
  7336.          WORD    top left (high byte = row, low byte = column)
  7337.          WORD    bottom right (high byte = row, low byte = column)
  7338. Return: DX:AX -> IRP structure or 0000h:0000h
  7339. SeeAlso: AH=00h"VMiX",AH=02h"VMiX"
  7340. --------T-1501-------------------------------
  7341. INT 15 - MultiDOS Plus - REQUEST RESOURCE SEMAPHORE
  7342.     AH = 01h
  7343.     AL = semaphore number (00h-3Fh)
  7344. Return: AH = status
  7345.         00h successful
  7346.         02h invalid semaphore number
  7347. Notes:    if the semaphore is not owned, ownership is assigned to the calling
  7348.       task and the call returns immediately
  7349.     if the semaphore is already owned by another task, the calling task
  7350.       is placed on a queue for the semaphore and suspended until it can
  7351.       become owner of the semaphore
  7352.     semaphore 0 is used internally by MultiDOS to synchronize DOS access
  7353. SeeAlso: AH=02h"MultiDOS",AH=10h"MultiDOS",AH=1Bh"MultiDOS"
  7354. --------B-1502-------------------------------
  7355. INT 15 - CASSETTE - READ DATA (PC and PCjr only)
  7356.     AH = 02h
  7357.     CX = number of bytes to read
  7358.     ES:BX -> buffer
  7359. Return: CF clear if successful
  7360.         DX = number of bytes read
  7361.         ES:BX -> byte following last byte read
  7362.     CF set on error
  7363.     AH = status (see #0328)
  7364. SeeAlso: AH=00h"CASSETTE",AH=03h"CASSETTE"
  7365.  
  7366. (Table 0328)
  7367. Values for Cassette status:
  7368.  00h    successful
  7369.  01h    CRC error
  7370.  02h    bad tape signals
  7371.  04h    no data
  7372.  80h    invalid command
  7373.  86h    no cassette present
  7374. --------b-1502-------------------------------
  7375. INT 15 - Amstrad PC1512 - READ DATA FROM NON-VOLATILE RAM
  7376.     AH = 02h
  7377.     AL = NVRAM location (00h to 3Fh)
  7378. Return: AH = return code
  7379.         00h OK
  7380.         01h address bad
  7381.         02h checksum error
  7382.     AL = NVRAM data value
  7383. SeeAlso: AH=01h"Amstrad"
  7384. --------O-1502-------------------------------
  7385. INT 15 - VMiX - "sys_memreq" - MEMORY OBJECT MANAGER
  7386.     AH = 02h
  7387.     STACK:    WORD    object ID of requestor
  7388.         DWORD    pointer to ASCIZ name of requested method
  7389.             "assign" allocate low memory block
  7390.             "assign extended" allocate extended memory pages
  7391.             "assign gdt" allocate GDT selector
  7392.             "paged" allocate low paged memory
  7393.             "paged extended" alllocate extended memory pages
  7394.             "deassign" free memory block
  7395.             "deassign gdt" free GDT selector
  7396.             "getvpage" get physical address for virtual page
  7397.             "setvpage" set physical address for virtual page
  7398.             "info" get VMiX memory usage info block
  7399.             "move" move contents of 32-bit memory
  7400.             "newmcb" make new DOS memory control block
  7401.             "owner" get process ID of MCB or PSP owner
  7402.             "umb" allocate upper memory block
  7403.             "video" toggle system use of video memory and get stat
  7404.         ---if "assign"---
  7405.          WORD    number of objects
  7406.          WORD    size in bytes (multiple of 512 bytes)
  7407.         ---if "assign extended"---
  7408.          WORD    number of objects
  7409.          WORD    size in bytes (multiple of 4K)
  7410.         ---if "assign gdt"---
  7411.          WORD    access type (low byte)
  7412.          WORD    segment size in paragraphs
  7413.          DWORD    pointer to start of physical segment
  7414.         ---if "paged"---
  7415.          WORD    number of 512-byte pages
  7416.         ---if "paged extended"
  7417.          WORD    number of 4K pages
  7418.         ---if "deassign"---
  7419.          DWORD    pointer returned by previous allocation call
  7420.         ---if "deassign gdt"---
  7421.          WORD    GDT selector
  7422.         ---if "getvpage"---
  7423.          WORD    owner's process ID
  7424.          DWORD    pointer to buffer for page structure (struct VPGE)
  7425.         ---if "setvpage"---
  7426.          WORD    owner's process ID
  7427.          DWORD    pointer to new page structure (struct VPGE)
  7428.         ---if "info"---
  7429.          no additional arguments
  7430.         ---if "move"
  7431.          DWORD    32-bit source address
  7432.          DWORD    32-bit destination address
  7433.          WORD    number of words to move
  7434.         ---if "newmcb"---
  7435.          DWORD    pointer to new MCB's location
  7436.          WORD    size of memory block
  7437.          DWORD    pointer to ASCIZ name string (max 8 chars)
  7438.         ---if "owner"---
  7439.          WORD    MCB or PSP segment
  7440.         ---if "umb"---
  7441.          WORD    size in paragraphs
  7442.         ---if "video"---
  7443.          no additional arguments
  7444. Return: DX:AX -> memory block or VPGE struct or 0000h:0000h
  7445. SeeAlso: AH=00h"VMiX",AH=01h"VMiX"
  7446. --------T-1502-------------------------------
  7447. INT 15 - MultiDOS Plus - RELEASE RESOURCE SEMAPHORE
  7448.     AH = 02h
  7449.     AL = semaphore number (00h-3Fh)
  7450. Return: AH = status
  7451.         00h successful
  7452.         01h not semaphore owner
  7453.         02h invalid semaphore number
  7454. Notes:    if any tasks are waiting for the semaphore, the first task on the wait
  7455.       queue will become the new owner and be reawakened
  7456.     do not use within an interrupt handler
  7457. SeeAlso: AH=01h"MultiDOS",AH=10h"MultiDOS",AH=1Ch"MultiDOS"
  7458. --------B-1503-------------------------------
  7459. INT 15 - CASSETTE - WRITE DATA (PC and PCjr only)
  7460.     AH = 03h
  7461.     CX = number of bytes to write
  7462.     ES:BX -> data buffer
  7463. Return: CF clear if successful
  7464.         ES:BX -> byte following last byte written
  7465.     CF set on error
  7466.     AH = status (see #0328)
  7467.     CX = 0000h
  7468. SeeAlso: AH=00h"CASSETTE",AH=02h"CASSETTE"
  7469. --------V-1503-------------------------------
  7470. INT 15 - Amstrad PC1512 - WRITE VDU COLOR PLANE WRITE REGISTER
  7471.     AH = 03h
  7472.     AL = value (I,R,G,B bits)
  7473. Return: nothing
  7474. SeeAlso: AH=04h"Amstrad"
  7475. --------O-1503-------------------------------
  7476. INT 15 - VMiX - "sys_pinput" - PROMPTED CONSOLE INPUT
  7477.     AH = 03h
  7478.     STACK:    DWORD    pointer to ASCII prompt
  7479.         WORD    field outline character
  7480.         WORD    length of input field (max 7Fh)
  7481.         DWORD    address of pointer to input buffer
  7482. Return: AX = length of input (input buffer is padded with blanks)
  7483. SeeAlso: AH=04h"VMiX"
  7484. --------T-1503-------------------------------
  7485. INT 15 - MultiDOS Plus - SUSPEND TASK FOR INTERVAL
  7486.     AH = 03h
  7487.     DX = number of time slices to remain suspended
  7488. Return: after specified interval has elapsed
  7489. Note:    when priority-based scheduling is in use, high-priority tasks should
  7490.       use this function to yield the processor
  7491. SeeAlso: AH=00h"MultiDOS",AH=0Ah"MultiDOS"
  7492. --------B-1504-------------------------------
  7493. INT 15 - SYSTEM - BUILD ABIOS SYSTEM PARAMETER TABLE (PS)
  7494.     AH = 04h
  7495.     ES:DI -> 32-byte results buffer for System Parameter Table (see #0329)
  7496.     DS = segment containing ABIOS RAM extensions (zero if none)
  7497. Return: CF clear if successful
  7498.         AH = 00h success
  7499.         ES:DI buffer filled
  7500.         AL destroyed
  7501.     CF set on failure
  7502.         AX destroyed
  7503.         AH = 80h/86h if not supported
  7504. SeeAlso: AH=05h"ABIOS",AH=C1h
  7505.  
  7506. Format of ABIOS System Parameter Table:
  7507. Offset    Size    Description    (Table 0329)
  7508.  00h    DWORD    FAR address of ABIOS Common Start Routine
  7509.  04h    DWORD    FAR address of ABIOS Interrupt Routine
  7510.  08h    DWORD    FAR address of ABIOS Time-out Routine
  7511.  0Ch    WORD    number of bytes of stack required by this ABIOS implementation
  7512.  0Eh 16 BYTEs    reserved
  7513.  1Eh    WORD    number of entries in initialization table
  7514. --------V-1504-------------------------------
  7515. INT 15 - Amstrad PC1512 - WRITE VDU COLOR PLANE READ REGISTER
  7516.     AH = 04h
  7517.     AL = value (RDSEL1 and RDSEL0)
  7518. Return: nothing
  7519. SeeAlso: AH=03h"Amstrad",AH=05h"Amstrad"
  7520. --------O-1504-------------------------------
  7521. INT 15 - VMiX - "sys_vprintf" - FORMATTED OUTPUT TO STREAM
  7522.     AH = 04h
  7523.     STACK:    DWORD    control string
  7524.         DWORD    array of arguments
  7525. Return: nothing
  7526. SeeAlso: AH=03h"VMiX"
  7527. --------T-1504-------------------------------
  7528. INT 15 - MultiDOS Plus - SEND MESSAGE TO ANOTHER TASK
  7529.     AH = 04h
  7530.     AL = mailbox number (00h-3Fh)
  7531.     CX = message length in bytes
  7532.     DS:SI -> message
  7533. Return: AH = status
  7534.         00h successful
  7535.         01h out of message memory
  7536.         02h invalid mailbox number
  7537. Note:    the message is copied into a system buffer; the caller may immediately
  7538.       reuse its buffer
  7539. SeeAlso: AH=05h"MultiDOS"
  7540. --------B-1505-------------------------------
  7541. INT 15 - SYSTEM - BUILD ABIOS INITIALIZATION TABLE (PS)
  7542.     AH = 05h
  7543.     ES:DI -> results buffer of length 18h * Number_of_Entries (see #0330)
  7544.     DS = segment containing ABIOS RAM extensions (zero if none)
  7545. Return: CF clear if successful
  7546.         AH = 00h success
  7547.         ES:DI buffer filled
  7548.         AL destroyed
  7549.     CF set on failure
  7550.         AX destroyed
  7551.         AH = 80h/86h if not supported
  7552. SeeAlso: AH=04h"ABIOS",AH=C1h
  7553.  
  7554. Format of one entry of ABIOS Initialization Table:
  7555. Offset    Size    Description    (Table 0330)
  7556.  00h    WORD    device ID (see #0331)
  7557.  02h    WORD    number of Logical IDs
  7558.  04h    WORD    Device Block length (zero for ABIOS patch or extension)
  7559.  06h    DWORD    -> init routine for Device Block and Function Transfer Table
  7560.  0Ah    WORD    request block length
  7561.  0Ch    WORD    Function Transfer Table length (zero for a patch)
  7562.  0Eh    WORD    Data Pointers length (in Common Data Area)
  7563.  10h    BYTE    secondary device ID (hardware level this ABIOS ver supports)
  7564.  11h    BYTE    revision (device driver revision level this ABIOS supports)
  7565.  12h  6 BYTEs    reserved
  7566.  
  7567. (Table 0331)
  7568. Values for ABIOS device ID:
  7569.  00h    ABIOS internal calls
  7570.  01h    floppy disk
  7571.  02h    hard disk
  7572.  03h    video
  7573.  04h    keyboard
  7574.  05h    parallel port
  7575.  06h    serial port
  7576.  07h    system timer
  7577.  08h    real-time clock
  7578.  09h    system services
  7579.  0Ah    NMI
  7580.  0Bh    mouse
  7581.  0Eh    CMOS RAM
  7582.  0Fh    DMA
  7583.  10h    Programmable Option Select (POS)
  7584.  16h    keyboard password
  7585. --------V-1505-------------------------------
  7586. INT 15 - Amstrad PC1512 - WRITE VDU GRAPHICS BORDER REGISTER
  7587.     AH = 05h
  7588.     AL = value (I,R,G,B bits)
  7589. Return: nothing
  7590. SeeAlso: AH=04h"Amstrad"
  7591. --------O-1505-------------------------------
  7592. INT 15 - VMiX - "sys_getpid" - GET PROCESS ID OF CURRENT PROCESS
  7593.     AH = 05h
  7594. Return: AX = process ID
  7595. SeeAlso: AH=06h"VMiX",AH=0Bh"VMiX"
  7596. --------T-1505-------------------------------
  7597. INT 15 - MultiDOS Plus - CHECK MAILBOX
  7598.     AH = 05h
  7599.     AL = mailbox number (00h-3Fh)
  7600. Return: AH = status
  7601.         00h successful
  7602.         DX = length of first message in queue, 0000h if no message
  7603.         02h invalid mailbox number
  7604. SeeAlso: AH=04h"MultiDOS",AH=06h"MultiDOS"
  7605. --------b-1506-------------------------------
  7606. INT 15 - Amstrad PC1512 - GET ROS VERSION NUMBER
  7607.     AH = 06h
  7608. Return: BX = version number
  7609. --------O-1506-------------------------------
  7610. INT 15 - VMiX - "sys_getpcb" - GET POINTER TO PROCESS CONTROL BLOCK
  7611.     AH = 06h
  7612.     STACK:    WORD    process ID
  7613. Return: DX:AX -> process control block
  7614. SeeAlso: AH=05h"VMiX",AH=07h"VMiX",AH=08h"VMiX"
  7615. --------T-1506-------------------------------
  7616. INT 15 - MultiDOS Plus - READ MAILBOX
  7617.     AH = 06h
  7618.     AL = mailbox number (00h-3Fh)
  7619.     CX = size of buffer in bytes
  7620.     ES:DI -> buffer for message
  7621. Return: AH = status
  7622.         00h successful
  7623.         CX = number of bytes copied
  7624.         DX = actual length of message
  7625.         02h invalid mailbox number
  7626. Note:    if the caller's buffer is not large enough, the message is truncated
  7627.       and the remainder is lost
  7628. SeeAlso: AH=04h"MultiDOS",AH=05h"MultiDOS"
  7629. --------O-1507-------------------------------
  7630. INT 15 - VMiX - "sys_getocb" - GET POINTER TO OBJECT CONTROL BLOCK
  7631.     AH = 07h
  7632.     STACK:    WORD    object type
  7633. Return: DX:AX -> object control block
  7634. SeeAlso: AH=06h"VMiX",AH=08h"VMiX"
  7635. ----------1507-------------------------------
  7636. INT 15 - IBM SurePath BIOS - Officially "Private" Function
  7637.     AH = 07h
  7638. SeeAlso: AH=08h"IBM"
  7639. --------T-1507-------------------------------
  7640. INT 15 - MultiDOS Plus - SPAWN INTERNAL TASK (CREATE NEW THREAD)
  7641.     AH = 07h
  7642.     BX:CX = entry point of new task
  7643.     DX = stack size in paragraphs
  7644. Return: AH = status
  7645.         00h successful
  7646.         01h no free task control blocks
  7647.         02h no free memory for task's stack
  7648. Note:    execution returns immediately to calling task
  7649. SeeAlso: AH=08h"MultiDOS",AH=09h"MultiDOS",AH=13h"MultiDOS"
  7650. --------O-1508-------------------------------
  7651. INT 15 - VMiX - "sys_getccb" - GET CHANNEL CONTROL BLOCK
  7652.     AH = 08h
  7653.     STACK:    WORD    channel ID
  7654. Return: DX:AX -> channel control block
  7655. SeeAlso: AH=06h"VMiX",AH=07h"VMiX"
  7656. --------B-1508-------------------------------
  7657. INT 15 - IBM SurePath BIOS - WAIT REQUESTED TIME PERIOD
  7658.     AH = 08h
  7659.     AL = function
  7660.         00h wait in increments of 15.025 microseconds
  7661.         CX = number of time increments to wait (0000h = maximum)
  7662.         80h wait in increments of 840 ns
  7663.         ECX = number of time increments to wait
  7664.         81h I/O event wait
  7665.         BH = bitmask of bits to check
  7666.         BL = expected pattern
  7667.         DX = I/O port address
  7668.         ECX = number of 840 ns microticks to wait
  7669.         Return: ECX = 00000000h if expected pattern did not occur
  7670.         82h memory event wait
  7671.         BH = bitmask of bits to check
  7672.         BL = expected pattern
  7673.         ES:SI -> BYTE to check
  7674.         ECX = number of 840 ns microticks to wait
  7675.         Return: ECX = 00000000h if expected pattern did not occur
  7676.         other reserved
  7677. Return: CF clear if successful
  7678.     CF set on error
  7679.     AH = status
  7680.         00h successful
  7681.         01h used 15.025 microsecond interval, time rounded up
  7682.         08h reserved subfunction
  7683.         86h function not supported
  7684. Notes:    IBM classifies this function as optional
  7685.     if the POST determines that the timer is nonfunctional, this function
  7686.       uses the 15.025 microsecond refresh timer instead of the
  7687.       full-resolution timer
  7688. SeeAlso: AH=07h"IBM",AH=09h"IBM",AH=86h
  7689. --------T-1508-------------------------------
  7690. INT 15 - MultiDOS Plus - TERMINATE INTERNAL TASK (KILL THREAD)
  7691.     AH = 08h
  7692. Return: calling task terminated, so execution never returns to caller
  7693. Notes:    an internal task must be terminated with this function rather than a
  7694.       DOS termination function
  7695.     task's stack space is returned to parent task's memory pool
  7696. SeeAlso: AH=07h"MultiDOS"
  7697. --------O-1509-------------------------------
  7698. INT 15 - VMiX - "sys_getqueue" - GET ID OF QUEUED ELEMENT
  7699.     AH = 09h
  7700.     STACK:    WORD    queue ID (0 = process queue, 1 = object, 3 = type)
  7701.         WORD    subqueue ID
  7702. Return: AX = queue ID
  7703. SeeAlso: AH=0Ah"VMiX"
  7704. ----------1509-------------------------------
  7705. INT 15 - IBM BIOS - RESERVED FOR PCMCIA SYSTEM RESOURCE TABLE ACCESS
  7706.     AH = 09h
  7707.     no further details available
  7708. SeeAlso: AH=08h"IBM"
  7709. --------T-1509-------------------------------
  7710. INT 15 - MultiDOS Plus - CHANGE TASK'S PRIORITY
  7711.     AH = 09h
  7712.     AL = new priority
  7713. Return: nothing
  7714. Note:    the priority has different meanings depending on whether priority-
  7715.       based or round-robin scheduling is used
  7716. SeeAlso: AH=07h"MultiDOS"
  7717. --------O-150A-------------------------------
  7718. INT 15 - VMiX - "sys_qetqnext" - GET ID OF NEXT QUEUED ELEMENT
  7719.     AH = 0Ah
  7720.     STACK:    WORD    queue ID (0 = process queue, 1 = object, 3 = type)
  7721.         WORD    ID of current element in queue chain
  7722. Return: AX = ID of next element
  7723. SeeAlso: AH=09h"VMiX",AH=0Fh"VMiX"
  7724. --------T-150A-------------------------------
  7725. INT 15 - MultiDOS Plus - CHANGE TIME SLICE INTERVAL
  7726.     AH = 0Ah
  7727.     AL = new interval
  7728.         00h = 55.0 ms (default)
  7729.         80h = 27.5 ms
  7730.         40h = 13.75 ms
  7731.         20h = 6.88 ms
  7732.         10h = 3.44 ms
  7733.         08h = 1.72 ms
  7734. SeeAlso: AH=03h"MultiDOS"
  7735. --------O-150B-------------------------------
  7736. INT 15 - VMiX - "sys_sysreq" - SYSTEM CONFIGURATION MANAGER
  7737.     AH = 0Bh
  7738.     STACK:    WORD    caller's UID
  7739.         DWORD    pointer to ASCIZ name of requested method
  7740.             "abort" abort current send/receive on comm port
  7741.             "block" start/end critical section
  7742.             "close" terminate interrupt-drive comm I/O
  7743.             "open" prepare comm port for interrupt-driven I/O
  7744.             "delay" set delay timer and wait
  7745.             "hibernate" put process to sleep
  7746.             "ints" enable/disable interrupt-driven INT 14h
  7747.             "length" get current send/receive buffer offsets
  7748.             "kswitch" switch stacks
  7749.             "numproc" get number of active processes
  7750.             "protocol" set protocol function for comm interrupts
  7751.             "relocate" set/reset VMiX flag for relocating to himem
  7752.             "status" get current open comm port status
  7753.             "wake" awaken a process
  7754.             "xport" get comm port polled for logins
  7755.         ---if "abort"---
  7756.          no additional arguments
  7757.         ---if "block"---
  7758.          WORD    0000h end, 0001h start
  7759.         ---if "close"---
  7760.          no additional arguments
  7761.         ---if "open"---
  7762.          WORD    comm port (00h-03h)
  7763.          WORD    BIOS parameter byte (see #0219 at INT 14/AH=00h),
  7764.             except bits 7-5: 000 = 19200, 001 = 38400, 011 = 115200
  7765.         ---if "delay"---
  7766.          WORD    time in seconds
  7767.         ---if "hibernate"---
  7768.          WORD    process ID
  7769.         ---if "ints"---
  7770.          WORD    0000h if no, 0001h if yes
  7771.         ---if "length","numproc","relocate","status","xport"---
  7772.          no additional arguments
  7773.         ---if "kswitch"---
  7774.          DWORD    pointer to new stack
  7775.         ---if "protocol"---
  7776.          DWORD    pointer to function (must be in low "assign"ed memory
  7777.             when in 386 mode)
  7778.         ---if "wake"---
  7779.          WORD    process ID
  7780. Return: DX:AX -> result or 0000h:0000h
  7781.         ---if "length"---
  7782.          BYTE    receive offset
  7783.          BYTE    send offset
  7784.         ---if "kswitch"---
  7785.          DWORD    old stack pointer
  7786.         ---if "numproc"---
  7787.          WORD    number of active processes
  7788.         ---if "status"---
  7789.          current open comm port status
  7790.         ---if "xport"---
  7791.          current comm port being polled for logins
  7792. Note:    the "delay" command reportedly disables the keyboard until the delay
  7793.       completes
  7794. SeeAlso: AH=05h"VMiX",AH=0Eh"VMiX"
  7795. --------T-150B-------------------------------
  7796. INT 15 - MultiDOS Plus - FORCE DISPLAY OUTPUT TO PHYSICAL SCREEN MEMORY
  7797.     AH = 0Bh
  7798. Return: nothing
  7799. Notes:    sets calling task's screen pointer to actual screen memory; the pointer
  7800.       may be restored with AH=0Ch
  7801.     caller's video mode must be same as foreground task's video mode
  7802.     any text written while in the background will be saved to the
  7803.       foreground task's virtual screen when it switches to the background
  7804.     useful if a background task wants to display a message on the
  7805.       foreground screen
  7806. SeeAlso: AH=0Ch"MultiDOS"
  7807. --------O-150C-------------------------------
  7808. INT 15 - VMiX - "sys_getstack" - GET POINTER TO PROCESS TSS STACK
  7809.     AH = 0Ch
  7810.     STACK:    WORD    process ID
  7811. Return: DX:AX -> TSS stack store
  7812. SeeAlso: AH=00h"VMiX"
  7813. --------T-150C-------------------------------
  7814. INT 15 - MultiDOS Plus - RESTORE OLD VIDEO DISPLAY MEMORY
  7815.     AH = 0Ch
  7816. Return: nothing
  7817. Note:    restores task's screen pointer saved by AH=0Bh; must not be called
  7818.       unless AH=0Bh has been called first
  7819. SeeAlso: AH=0Bh"MultiDOS"
  7820. --------O-150D-------------------------------
  7821. INT 15 - VMiX - "sys_spawn" - START A CHILD PROCESS JOB SHELL
  7822.     AH = 0Dh
  7823.     STACK:    DWORD    ASCIZ string starting with requested I/O channel and
  7824.             followed by standard VMiX shell command string
  7825. Return: AX = process ID or error code "SYS_ERROR"
  7826. Note:    the maximum string length is 7Fh characters
  7827. SeeAlso: AH=0Eh"VMIX",AH=11h"VMiX",INT 21/AH=4Bh
  7828. --------T-150D-------------------------------
  7829. INT 15 - MultiDOS Plus - DISABLE MULTITASKING
  7830.     AH = 0Dh
  7831. Return: nothing
  7832. Note:    calling task receives all time slices until AH=0Eh is called; this
  7833.       allows time-critical events or nonreentrant code to be processed
  7834. SeeAlso: AH=0Eh"MultiDOS",AH=10h"MultiDOS",AX=101Bh,AH=20h"MultiDOS"
  7835. --------O-150E-------------------------------
  7836. INT 15 - VMiX - "sys_kill" - HARD TERMINATE PROCESS
  7837.     AH = 0Eh
  7838.     STACK:    WORD    process ID
  7839. Return: AX = status (SYS_OK or SYS_ERROR)
  7840. SeeAlso: AH=0Bh"VMiX",AH=0Dh"VMIX"
  7841. --------T-150E-------------------------------
  7842. INT 15 - MultiDOS Plus - ENABLE MULTITASKING
  7843.     AH = 0Eh
  7844. Return: nothing
  7845. SeeAlso: AH=0Dh"MultiDOS",AX=101Ch,AH=20h"MultiDOS"
  7846. --------d-150F-------------------------------
  7847. INT 15 C - SYSTEM - FORMAT UNIT PERIODIC INTERRUPT (PS ESDI drives only)
  7848.     AH = 0Fh
  7849.     AL = phase code
  7850.         00h reserved
  7851.         01h surface analysis
  7852.         02h formatting
  7853. Return: CF clear if formatting should continue
  7854.     CF set if formatting should terminate
  7855. Note:    called during ESDI drive formatting after each cylinder is completed
  7856. SeeAlso: INT 13/AH=1Ah
  7857. --------O-150F-------------------------------
  7858. INT 15 - VMiX - "sys_getqkey" - GET KEY FIELD OF QUEUED ELEMENT
  7859.     AH = 0Fh
  7860.     STACK:    WORD    queue ID (0 = process queue, 1 = object q, 3 = type q)
  7861.         WORD    ID of element in queue chain
  7862. Return: AX = key
  7863. SeeAlso: AH=0Ah"VMiX"
  7864. --------T-150F-------------------------------
  7865. INT 15 - MultiDOS Plus - EXECUTE A MULTIDOS PLUS COMMAND
  7866.     AH = 0Fh
  7867.     DS:BX -> ASCIZ command
  7868. Return: after command has been processed
  7869. Notes:    specified string is executed as if it had been typed at the MultiDOS
  7870.       command prompt
  7871.     the task is placed on a queue which MultiDOS examines periodically and
  7872.       is suspended until MultiDOS has processed the command
  7873.     all lowercase characters up to the first blank are converted to upper
  7874.       case within the given buffer
  7875. --------O-1510-------------------------------
  7876. INT 15 - VMiX - "sys_virtual" - EXECUTE CONFORMING FUNCTION IN PROTECTED MODE
  7877.     AH = 10h
  7878.     STACK:    DWORD    pointer to function
  7879.           N WORDs    function args
  7880. Return: AX = function's return value??? (not specified in documentation)
  7881. Note:    while the function is executing, the following global descriptors are
  7882.       available:
  7883.         20h stack segment
  7884.         38h code segment of function
  7885.         40h data alias for function's code segment
  7886.       additional GDT descriptors can be allocated using AH=02h with
  7887.       function "assign gdt"
  7888. SeeAlso: AH=02h"VMiX",AH=51h"VMiX"
  7889. --------T-1510-------------------------------
  7890. INT 15 - MultiDOS Plus - TEST RESOURCE SEMAPHORE
  7891.     AH = 10h
  7892.     AL = semaphore number (00h-3Fh)
  7893. Return: AH = status
  7894.         00h semaphore not in use
  7895.         01h semaphore owned by another task
  7896.         02h invalid semaphore number
  7897.         03h semaphore owned by caller
  7898. SeeAlso: AH=02h"MultiDOS",AH=0Dh"MultiDOS",AH=1Dh"MultiDOS"
  7899. --------Q-151000-----------------------------
  7900. INT 15 - TopView - "PAUSE" - GIVE UP CPU TIME
  7901.     AX = 1000h
  7902. Return: after other processes run
  7903. Note:    under DESQview, if the process issuing this call has hooked INT 08h,
  7904.       the current time-slice is set to expire at the next clock tick rather
  7905.       than immediately
  7906. SeeAlso: AH=00h"MultiDOS",AX=5305h,INT 21/AH=89h,INT 21/AH=EEh"DoubleDOS"
  7907. SeeAlso: INT 2F/AX=1680h,INT 60/DI=0106h,INT 62/AH=01h,INT 6F/AH=2Ah"F_YIELD"
  7908. SeeAlso: INT 7A/BX=000Ah,INT 7F/AH=02h"MultiLink",INT 7F/AH=E8h
  7909. --------Q-151001-----------------------------
  7910. INT 15 - TopView - "GETMEM" - ALLOCATE "SYSTEM" MEMORY
  7911.     AX = 1001h
  7912.     BX = number of bytes to allocate
  7913. Return: ES:DI -> block of memory or 0000h:0000h (DV v2.26+)
  7914.     AX = status (DV v2.42)
  7915.         0000h successful
  7916.         0001h failed
  7917. Note:    use SETERROR (AX=DE15h) to avoid a user prompt if there is insufficient
  7918.       common memory.  Under DV v2.42, this call never generates a user
  7919.       prompt regardless of the SETERROR value; instead, it always returns
  7920.       AX=0001h and ES:DI=0000h:0000h if out of memory
  7921. SeeAlso: AX=1002h,AX=102Eh,AX=DE0Ch,AX=DE15h
  7922. --------Q-151002-----------------------------
  7923. INT 15 - TopView - "PUTMEM" - DEALLOCATE "SYSTEM" MEMORY
  7924.     AX = 1002h
  7925.     ES:DI -> previously allocated block
  7926. Return: block freed
  7927. SeeAlso: AX=1001h,AX=DE0Dh
  7928. --------Q-151003-----------------------------
  7929. INT 15 - TopView - "PRINTC" - DISPLAY CHARACTER/ATTRIBUTE ON SCREEN
  7930.     AX = 1003h
  7931.     BH = attribute
  7932.     BL = character
  7933.     DX = segment of object handle for window
  7934. Return: nothing
  7935. Note:    BX=0000h does not display anything, it only positions the hardware
  7936.       cursor to the logical cursor's current position
  7937. --------Q-1510-------------------------------
  7938. INT 15 - TopView - UNIMPLEMENTED IN DV 2.x
  7939.     AH = 10h
  7940.     AL = 04h thru 12h
  7941. Return: pops up "Programming error" window in DV 2.x
  7942. --------Q-151013-----------------------------
  7943. INT 15 - TopView - "GETBIT" - DEFINE A 2ND-LEVEL INTERRUPT HANDLER
  7944.     AX = 1013h
  7945.     ES:DI -> FAR service routine
  7946. Return: BX = bit mask indicating which bit was allocated
  7947.          0000h if no more bits available
  7948. SeeAlso: AX=1014h,AX=1015h
  7949. Note:    only a few TopView/DESQview API calls are allowed during a hardware
  7950.       interrupt; if other calls need to be made, the interrupt handler
  7951.       must schedule a 2nd-level interrupt with "SETBIT" (AX=1015h)
  7952. --------Q-151014-----------------------------
  7953. INT 15 - TopView - "FREEBIT" - UNDEFINE A 2ND-LEVEL INTERRUPT HANDLER
  7954.     AX = 1014h
  7955.     BX = bit mask from INT 15/AX=1013h
  7956. Return: nothing
  7957. SeeAlso: AX=1013h,AX=1015h
  7958. --------Q-151015-----------------------------
  7959. INT 15 - TopView - "SETBIT" - SCHEDULE ONE OR MORE 2ND-LEVEL INTERRUPTS
  7960.     AX = 1015h
  7961.     BX = bit mask for interrupts to post
  7962. Return: indicated routines will be called: (DV 2.0x) at next task switch
  7963.                        (DV 2.2x) immediately on return from
  7964.                              hardware interrupt
  7965. Notes:    this is one of the few TopView calls which are allowed from a hardware
  7966.       interrupt handler
  7967.     the handler will be called with ES containing the segment of the handle
  7968.       of the next task to be executed; on return, ES must be the segment of
  7969.       a task handle
  7970. SeeAlso: AX=1013h,AX=1014h
  7971. --------Q-151016-----------------------------
  7972. INT 15 - TopView - "ISOBJ" - VERIFY OBJECT HANDLE
  7973.     AX = 1016h
  7974.     ES:DI = possible object handle
  7975. Return: BX = status
  7976.         FFFFh if ES:DI is a valid object handle (see #0333)
  7977.         0000h if ES:DI is not
  7978. Note:    under DESQview versions prior to 2.50, an object handle is always a
  7979.       pointer to the object; for versions 2.50 and up, only task handles
  7980.       are always pointers--other handles may consist of a unique object
  7981.       number and offset into DESQview's common memory (see #0342)
  7982. SeeAlso: AX=DE14h,AX=DE2Bh,AX=DE2Ch
  7983.  
  7984. (Table 0332)
  7985. Values for DESQview object type:
  7986.  00h    window/task
  7987.  01h    mailbox
  7988.  02h    keyboard
  7989.  03h    timer
  7990.  04h    pointer
  7991.  05h    panel
  7992.  06h    objectq
  7993.  
  7994. Format of DESQview object:
  7995. Offset    Size    Description    (Table 0333)
  7996.  00h    WORD    offset in common memory of previous object of same type
  7997.  02h    WORD    offset in common memory of next object of same type
  7998.  04h    WORD    signature FEDCh (DV 2.42-)
  7999.         signature FEDCh or object number (DV 2.50+)
  8000.  06h    WORD    object type (see #0332)
  8001.  08h    DWORD    object handle to return to caller
  8002.  0Ch    DWORD    canonicalized object address (segment = common memory)
  8003.  10h    WORD    offset in common memory of owning task
  8004.         (0000h for unowned OBJECTQs)
  8005.  12h    WORD    mapping context
  8006.         offset in common memory of mapping context record (see #0335)
  8007.     remainder varies by object type and DESQview version
  8008. ---v2.42 keyboard object---
  8009.  14h    WORD    flag bits (see also AH=12h/BH=0Ah"OBJECT")
  8010.         bit 15: keyboard opened
  8011.  16h  4 BYTEs    ???
  8012.  1Ah    WORD    priority in OBJECTQ???
  8013.  1Ch    ...
  8014.  25h    WORD    offset in common memory of ??? task
  8015.  27h  4 BYTEs    ???
  8016. ---v2.42 objectq object---
  8017.  14h    WORD    flag bits (see also AH=12h/BH=0Ah"OBJECT")
  8018.         bit 15: OBJECTQ opened
  8019.  16h  2 BYTEs    ???
  8020.  18h    WORD    offset in common memory of ??? task
  8021.  1Ah  6 BYTEs    ???
  8022. ---v2.42 mailbox object---
  8023.  14h    WORD    flag bits (see also AH=12h/BH=0Ah"OBJECT")
  8024.         bit 15: mailbox opened
  8025.  1Ah    WORD    priority in OBJECTQ???
  8026.  1Ch  6 BYTEs    ???
  8027.  22h    WORD    offset in common memory of mailbox name (counted string)
  8028.         0000h if no name
  8029.      <= 5 BYTEs ???
  8030. ---v2.22-2.42,2.52,2.60 window/task object---
  8031.  14h    BYTE    00h window, 01h task
  8032.  15h    BYTE    internal (not Switch menu) window number???
  8033.  16h    BYTE    internal (not Switch menu) window number???
  8034.  17h    WORD    segment of internal window record (see #0336)
  8035.  19h  2 BYTEs    ???
  8036.  1Bh    BYTE    cursor row
  8037.  1Ch    BYTE    cursor column
  8038.  1Dh    BYTE    visible window origin, row
  8039.  1Eh    BYTE    visible window origin, column
  8040.  1Fh    BYTE    window height (logical)
  8041.  20h    BYTE    window width (logical)
  8042.  21h    BYTE    window position, row
  8043.  22h    BYTE    window position, column
  8044.  23h    BYTE    window height (visible)
  8045.  24h    BYTE    window width (visible)
  8046.  25h    BYTE    row of top of frame (or window if unframed)
  8047.  26h    BYTE    column of left of frame (or window if unframed)
  8048.  27h    BYTE    window height (physical, including frame)
  8049.  28h    BYTE    window width (physical, including frame)
  8050.  29h    BYTE    unzoomed visible origin, row (00h before first zoom)
  8051.  2Ah    BYTE    unzoomed visible origin, column (00h before first zoom)
  8052.  2Bh    BYTE    unzoomed window position, row (00h before first zoom)
  8053.  2Ch    BYTE    unzoomed window position, column (00h before first zoom)
  8054.  2Dh    BYTE    unzoomed window height (00h before first zoom)
  8055.  2Eh    BYTE    unzoomed window width (00h before first zoom)
  8056.         unzoomed parameters above are updated when window is zoomed
  8057.           to full screen
  8058.  2Fh    BYTE    ??? initially logical window height
  8059.  30h    BYTE    ??? initially logical window width
  8060.  31h  2 BYTEs    ???
  8061.  33h    BYTE    minimum height of window
  8062.  34h    BYTE    minimum width of window
  8063.  35h    BYTE    maximum height of window
  8064.  36h    BYTE    maximum width of window
  8065.  37h  3 BYTEs    ???
  8066.  3Ah  8 BYTEs    window frame characters: ul,ur,ll,lr,t,b,l,r
  8067.  42h 24 BYTEs    attributes???
  8068.  5Ah  8 BYTEs    window frame characters: ul,ur,ll,lr,t,b,l,r
  8069.  62h  3 BYTEs    ???
  8070.  65h    BYTE    ??? bitflags
  8071.  66h    BYTE    bit 0: window is zoomed
  8072.  67h    BYTE    ???
  8073.  68h    WORD    offset in common memory of window name or 0000h if untitled
  8074.  6Ah    WORD    length of window name
  8075.  6Ch  2 BYTEs    ???
  8076.  6Eh    WORD    offset of logical cursor in window (in character cells)
  8077.  70h    DWORD    pointer to field table for window
  8078.  74h    BYTE    ???
  8079.  75h  2 BYTEs    ???
  8080.  77h    BYTE    number of last-visited field
  8081.  78h    DWORD    pointer to field table entry for last-visited field
  8082.  7Ch  3 BYTEs    ???
  8083.  7Fh    BYTE    select field marker character
  8084.  80h    BYTE    ??? bit flags
  8085.         bit 0: allow ECh window stream opcode to change reverse logattr
  8086.         bit 1: alternate field processing mode selected
  8087.  81h    BYTE    ???
  8088.  82h    DWORD    notification function (manager stream opcode 8Ah)
  8089.         no notification if segment = 0000h
  8090.  86h    DWORD    notification argument (manager stream opcode 8Bh)
  8091.  8Ah    WORD    offset in common memory of ??? window object or 0000h
  8092.  8Ch    WORD    offset in common memory of ??? window object or 0000h
  8093.  8Eh    WORD    offset in common memory of ??? window object or 0000h
  8094.  90h    BYTE    ??? bitflags
  8095.  91h    BYTE    ???
  8096.  ---task object only
  8097.  92h    BYTE    bit flags (bits 0-4)
  8098.  93h    BYTE    character for ??? (default 20h)
  8099.  94h    BYTE    ??? flag
  8100.  95h    WORD    offset in common memory of ???
  8101.  97h  2 BYTEs    ???
  8102.  99h    WORD    ???
  8103.  9Bh    BYTE    ??? bit flags
  8104.         bit 3: ???
  8105.         bit 6: perform protected-attribute processing on select fields
  8106.  9Ch    BYTE    ???
  8107.  9Dh    WORD    offset in common memory of current register save record
  8108.           (see #0334).    No register save record in use if < 01C0h
  8109.  9Fh    WORD    offset in common memory of task's keyboard object
  8110.  A1h    WORD    offset in common memory of task's OBJECTQ object
  8111.  A3h    WORD    offset in common memory of task's mailbox object
  8112.  A5h    WORD    semaphore: FFFFh if on user stack, else on task's private stack
  8113.  A7h    DWORD    user's SS:SP
  8114.  ABh    WORD    task's private SP (SS read from offset 0Ah)
  8115.  ADh  6 BYTEs    ???
  8116.  B3h    BYTE    ??? bit flags
  8117.         bit 0: run in foreground only
  8118.  B4h    BYTE    ???
  8119.  B5h    BYTE    ??? bitflags
  8120.  B6h    BYTE    task status (see #0472 at AX=DE2Ch)
  8121.  B7h  9 BYTEs    ???
  8122.  C0h    WORD    head pointer for keyboard buffer (wraps back to 00h after 80h)
  8123.  C2h    WORD    tail pointer for keyboard buffer (wraps back to 00h after 80h)
  8124.  C4h  2 BYTEs    ??? (0000h)
  8125.  C6h    WORD    segment of keyboard buffer for task
  8126.  C8h    WORD    offset in common memory of ??? keyboard object
  8127.  CAh    BYTE    ???
  8128. ---v2.22-2.42
  8129.  CBh    WORD    offset in common memory of ??? object
  8130.  CEh    BYTE    ??? flag
  8131.  CFh    WORD    offset in common memory of default notify window for task
  8132.           or 0000h if none
  8133.  D1h  4 BYTEs    ???
  8134.  D5h    BYTE    window number on Switch Window menu
  8135.  D6h  5 BYTEs    ???
  8136.  DBh    WORD    offset in common memory of ??? object
  8137.  DDh  2 BYTEs    ???
  8138.  DFh    WORD    API level for task
  8139.  E1h    WORD    offset in common memory of object task is waiting on if task
  8140.           status is 'waiting', else 0000h
  8141.  E7h    WORD    segment of ???
  8142.  E9h 4    BYTEs    ???
  8143.  EDh    WORD    EMS handle of virtualization buffer, 0000h if no virtualization
  8144.  F1h 12 BYTEs    ???
  8145.  FBh    WORD    ???
  8146.  FDh    BYTE    ???
  8147.  FFh 12 BYTEs    ???
  8148. 10Bh    DWORD    pointer to process record (see #0337,#0338)
  8149. 10Dh 10 BYTEs    ???
  8150. 119h    DWORD    SS:SP for ???
  8151. 11Dh  4 BYTEs    ???
  8152. 121h    DWORD    pointer to ???
  8153. 125h 25 BYTEs    ???
  8154. 13Eh    DWORD    pointer to ??? in system memory
  8155. ---v2.22
  8156. 142h  3 BYTEs    ???
  8157. 145h        task's default keyboard object
  8158. ---v2.42
  8159. 142h    DWORD    pointer to first task instance data record in system memory
  8160. 148h    DWORD    pointer to last task instance data record in system memory
  8161.         (see #0339)
  8162. 14Ah    BYTE    ???
  8163. 14Dh 42 BYTEs    task's default keyboard object
  8164. 177h 32 BYTEs    task's ObjectQ object
  8165. 197h 41 BYTEs    task's default mailbox object
  8166. 1C0h 24 BYTEs    first register save record
  8167. 450h    --    default top of private stack
  8168. ---v2.52 (probably all DV/X)
  8169. Same as v2.60 below except there is an extra 29 bytes inserted somewhere
  8170.   before offset 9Fh, but not yet known exactly where.  Also, for the WAIT_ON
  8171.   field (v2.60 offset E3h), some X apps (probably waiting on a socket) have
  8172.   0000h even when waiting.
  8173. ---v2.60
  8174.  CBh    WORD    ??? (added in 2.50 - rest is same as 2.42)
  8175.  CDh    WORD    offset in common memory of ??? object
  8176.  D0h    BYTE    ??? flag
  8177.  D1h    WORD    offset in common memory of default notify window for task
  8178.           or 0000h if none
  8179.  D3h  4 BYTEs    ???
  8180.  D7h    BYTE    window number on Switch Window menu
  8181.  D8h  5 BYTEs    ???
  8182.  DDh    WORD    offset in common memory of ??? object
  8183.  DFh  2 BYTEs    ???
  8184.  E1h    WORD    API level for task
  8185.  E3h    WORD    If status at B6h=waiting, offset in common memory of object
  8186.           that task is waiting on, else 0000h. (Task with CPU also
  8187.           has 0000h here)
  8188.  E9h    WORD    segment of ???
  8189.  EBh 4    BYTEs    ???
  8190.  EFh    WORD    EMS handle of virtualization buffer, 0 if no virtualization
  8191.  F3h 12 BYTEs    ???
  8192.  FDh    WORD    ???
  8193.  FFh    BYTE    ???
  8194. 101h  8 BYTEs    ???
  8195. 109h    DWORD    pointer to process record in system memory
  8196. 10Dh 14 BYTEs  ???
  8197. 11Bh    DWORD    SS:SP for ???
  8198. 11Fh  4 BYTEs    ???
  8199. 123h    DWORD    pointer to ???
  8200. 127h 25 BYTEs    ???
  8201. 140h    DWORD    pointer to ??? in system memory
  8202. 144h    DWORD    pointer to first task instance data record in system memory
  8203. 148h    DWORD    pointer to last task instance data record in system memory
  8204.         (from INT 15/AX=DE27h) (see #0339)
  8205. 14Ch    BYTE    ???
  8206. 14Eh 42 BYTEs    task's default keyboard object
  8207. 179h 32 BYTEs    task's ObjectQ object
  8208. 199h 41 BYTEs    task's default mailbox object
  8209. 1C2h 24 BYTEs    first register save record
  8210. 452h    --    default top of private stack
  8211.  
  8212. Format of DESQview Register Save Record:
  8213. Offset    Size    Description    (Table 0334)
  8214.  00h    WORD    AX
  8215.  02h    WORD    BX
  8216.  04h    WORD    CX
  8217.  06h    WORD    DX
  8218.  08h    WORD    DI
  8219.  0Ah    WORD    SI
  8220.  0Eh    WORD    DS
  8221.  10h    WORD    ES
  8222.  12h    DWORD    return address
  8223.  16h    WORD    original flags
  8224.  
  8225. Format of DESQview mapping context record:
  8226. Offset    Size    Description    (Table 0335)
  8227.  00h    WORD    lowest segment in process's memory
  8228.         (often start of system memory chain)
  8229.  02h    WORD    size of process's memory in paragraphs
  8230.  04h    BYTE    flag: 00h if process swapped out, 01h otherwise
  8231.  05h    BYTE    flag: 00h if allocated in conventional memory, 01h if EMS
  8232.  06h  2 BYTEs    ???
  8233.  08h    WORD    EMS handle if in EMS, else 0
  8234.  0Ah  2 BYTEs    ??? (nonzero if system memory resides in shared mem???)
  8235.  0Ch    WORD    segment of system memory block that contains process record,
  8236.           referenced from segment of start of system memory chain
  8237.  0Eh    BYTE    ???
  8238.  0Fh    WORD    size of system memory block that contains process record
  8239.           and DOS memory in paragraphs
  8240.  11h    BYTE    bit flags
  8241.         Bit 0: Swapped out???
  8242.         Bit 1: ???
  8243.         Bit 2: Swapped out???
  8244.  12h    BYTE    ???
  8245.  13h    BYTE    reference count
  8246.  ---v2.31
  8247.  14h 10 BYTEs    ???
  8248.  1Eh    WORD    segment of process record
  8249.  20h  2 BYTEs    ???
  8250.  22h    WORD    segment of ???    (in first free system memory block???)
  8251.  24h    WORD    segment of end of system memory chain
  8252.  26h    WORD    segment of start of system memory chain
  8253.  28h  8 BYTEs    ???
  8254.  2Ah    DWORD    pointer to ??? (process record???)
  8255.  2Dh 10 BYTEs    ???
  8256.  37h    BYTE    lowest interrupt vector to save on context switch
  8257.  38h    BYTE    highest interrupt vector to save on context switch
  8258.  39h    WORD    offset in common memory of main task with this context
  8259.  3Ah 12 BYTEs    ???
  8260.  46h    BYTE    internal mapping context number
  8261.  47h 12 BYTEs    ???
  8262.  ---v2.5x-2.60
  8263.  14h  6 BYTEs    ???
  8264.  1Ah    WORD    segment of process record
  8265.  1Ch  2 BYTEs    ???
  8266.  1Eh    WORD    segment of first free system memory block
  8267.  20h    WORD    segment of start of system memory chain
  8268.  22h    WORD    segment of end of system memory chain
  8269.  24h 8    BYTEs    ???
  8270.  2Ch    DWORD    pointer to ??? (1 segment into process record???)
  8271.  30h 3    BYTEs    ???
  8272.  33h    WORD    Offset in common memory of main task with this context
  8273.  35h 7    BYTEs    ???
  8274.  3Ch    BYTE    internal mapping context number
  8275.  3Dh 14 BYTEs    ???
  8276.  4Bh    WORD    first DOS memory segment (first MCB segment+1)
  8277.  4Dh    BYTE    ??? (flag???)
  8278.  ---v2.53 (2.5x???)
  8279.  4Eh 12 BYTEs    ???
  8280.  ---v2.60
  8281.  4Eh    WORD    segment of script buffer (see #0340)
  8282.  50h  6 BYTEs    ???
  8283.  
  8284. Format of DESQview Internal Window Record (v2.31-2.60):
  8285. Offset    Size    Description    (Table 0336)
  8286.  00h    BYTE    internal window number???
  8287.  01h    BYTE    display page???
  8288.  02h    BYTE    video mode
  8289.  03h  3 BYTEs    ???
  8290.  06h    BYTE    logical window height
  8291.  07h    BYTE    logical window width
  8292.  08h    DWORD    pointer to text video buffer
  8293.  0Ch 116 BYTEs    ???
  8294.  
  8295. Format of DESQview process record (v2.31):
  8296. Offset    Size    Description    (Table 0337)
  8297. -470h 13 BYTEs    filename of ??? Script
  8298. -463h 1117 BYTEs ??? (script buffer???)
  8299.  -6h  6 BYTEs    ???
  8300.  00h    WORD    segment of parent PSP in process
  8301.  02h  5 BYTEs    ???
  8302.  07h    WORD    segment of current PSP in process
  8303.  09h    WORD    segment of first MCB in process
  8304.  0Bh 13 BYTEs    ???
  8305.  18h 1024 BYTEs process's interrupt vector table
  8306. 418h 376 BYTEs    ???
  8307. 590h        first MCB in process
  8308. SeeAlso: #0338
  8309.  
  8310. Format of DESQview process record (v2.52-v2.60) (probably also 2.5x):
  8311. Offset    Size    Description    (Table 0338)
  8312.  00h 28 BYTEs    EXE header of last EXE, ??? if last program run was COM
  8313.  1Ch ??? BYTEs    overwritten with ASCIZ filename of last program run (EXE/COM)
  8314. 11Ch    WORD    segment of parent PSP in process
  8315. 11Eh  4 BYTEs    ???
  8316. 122h    WORD    segment of current PSP
  8317. 124h    WORD    segment of current PSP
  8318. 126h    WORD    segment of first MCB in process
  8319. 128h  4 BYTEs    ???
  8320. 12Ch    DWORD    pointer to first process instance data record in system memory
  8321. 130h    DWORD    pointer to last process instance data record in system memory
  8322.         (from INT 15/AX=DE27h) (see #0339)
  8323. 134h  8 BYTEs    ???
  8324. 13Ch    WORD    size of current environment
  8325. 13Eh    WORD    segment of current environment
  8326. 140h    WORD    segment of current PSP
  8327. 142h    DWORD    entry point of current program
  8328. 146h 10 BYTEs    ???
  8329. ---v2.52 (v2.5x???)
  8330. 150h    BYTE    ???
  8331. 151h    WORD    segment of parent PSP in process
  8332. 153h    WORD    ???
  8333. 155h    WORD    ???
  8334. 157h    WORD    ???
  8335. 159h  4 BYTEs    ???
  8336. 15Dh    WORD    segment of current environment
  8337. 15Fh    WORD    segment of current PSP
  8338. 161h    WORD    segment of ???
  8339. 162h    WORD    ???
  8340. 164h  3 BYTEs    ???
  8341. 168h 1024 BYTEs process's interrupt vector table
  8342. 568h 120 BYTEs    ???
  8343. 5E0h        first MCB in process
  8344. ---v2.60
  8345. 150h    WORD    segment of parent PSP in process
  8346. 152h    WORD    ???
  8347. 154h    WORD    ???
  8348. 156h    WORD    ???
  8349. 158h  4 BYTEs    ???
  8350. 15Ch    WORD    segment of current environment
  8351. 15Eh    WORD    segment of current PSP
  8352. 160h    WORD    segment of ???
  8353. 162h    WORD    ???
  8354. 164h 1024 BYTEs process's interrupt vector table
  8355. 564h 108 BYTEs    ???
  8356. 5D0h        first MCB in process
  8357. SeeAlso: #0337
  8358.  
  8359. Format of DESQview task or process instance data record (v2.5x???, v2.60):
  8360. Offset    Size    Description    (Table 0339)
  8361.  00h    DWORD    pointer to next record of same type or 00000000
  8362.  04h    DWORD    pointer to previous record of same type or 00000000
  8363.  08h    DWORD    pointer to source area of memory during restore state
  8364.  0Ch    WORD    number of bytes to save/restore
  8365.  0Eh    DWORD    pointer to destination area of memory during restore state
  8366.  12h    WORD    ??? (0)
  8367.  14h  N BYTEs    source memory buffer during restore state
  8368.  
  8369. Format of DESQview script buffer (v2.60):
  8370. Offset    Size    Description    (Table 0340)
  8371.  00h 13 BYTEs    ASCIZ Script filename
  8372.  0Dh 80 BYTEs    ???
  8373.  5Eh  N BYTEs    script records (see #0341)
  8374.  
  8375. Format of one DESQview script record (v2.60):
  8376. Offset    Size    Description    (Table 0341)
  8377.  00h    BYTE    signature 12h
  8378.  01h 18 BYTEs    blank-padded script name
  8379.  13h    BYTE    ASCII code of key attached to script or 0 if non-ASCII key
  8380.  14h    BYTE    scan code of key attached to script if non-ASCII, else 0
  8381.  15h    BYTE    ???
  8382.  16h    WORD    size of script in bytes
  8383.  18h  N    BYTEs    script (ASCII code of each keystroke; if 0, next byte is
  8384.           scan code of non-ASCII key)
  8385. SeeAlso: #0340
  8386.  
  8387. Format of DESQview Common Memory Header (v2.31-2.60):
  8388. Offset    Size    Description    (Table 0342)
  8389.  00h    WORD    offset of lowest used block
  8390.  02h    WORD    bytes of commom memory, including header
  8391.  04h    WORD    offset of first free block
  8392.  06h  N BYTEs    size depends of DV version, ??? (DVP buffer???)
  8393. Note:    the above is located at the beginning of the commom memory segment
  8394. SeeAlso: #0343,#0344,#0352
  8395.  
  8396. Format of DESQview Free block header:
  8397. Offset    Size    Description    (Table 0343)
  8398.  00h    WORD    size of block in bytes including header
  8399.  02h    WORD    offset of next free block
  8400.  04h  N BYTEs    free block
  8401. SeeAlso: #0342,#0344
  8402.  
  8403. Format of DESQview Used block header:
  8404. Offset    Size    Description    (Table 0344)
  8405.  00h    WORD    size of block in bytes including header
  8406.  02h  N BYTEs    used block
  8407. SeeAlso: #0342,#0343
  8408. --------Q-151017-----------------------------
  8409. INT 15 - TopView - UNIMPLEMENTED IN DV 2.x
  8410.     AX = 1017h
  8411. Return: pops up "Programming error" window in DV 2.x
  8412. --------Q-151018-----------------------------
  8413. INT 15 - TopView - "LOCATE" - FIND WINDOW AT A GIVEN SCREEN LOCATION
  8414.     AX = 1018h
  8415.     BH = column
  8416.     BL = row
  8417.     ES = segment of object handle for window below which to search
  8418.          0000h = start search with topmost window
  8419. Return: ES = segment of object handle for window which is visible at the
  8420.            indicated position, or covered by indicated window
  8421.         0000h if no window
  8422. SeeAlso: AX=1023h,AX=1024h
  8423. --------Q-151019-----------------------------
  8424. INT 15 - TopView - "SOUND" - MAKE TONE
  8425.     AX = 1019h
  8426.     BX = frequency in Hertz (0000h = silence)
  8427.     CX = duration in clock ticks (18.2 ticks/sec)
  8428. Return: immediately, tone continues to completion
  8429. Notes:    if another tone is already playing, the new tone does not start until
  8430.       completion of the previous one.  Up to 32 tones may be queued before
  8431.       the process is blocked until a note completes.
  8432.     in DV 2.00, the lowest tone allowed is 20 Hz
  8433.     if CX = 0, the current note is cancelled; if BX = 0 as well, all queued
  8434.       notes are also cancelled
  8435. SeeAlso: AH=82h"HUNTER",INT 16/AH=73h
  8436. --------Q-15101A-----------------------------
  8437. INT 15 - TopView - "OSTACK" - SWITCH TO TASK'S INTERNAL STACK
  8438.     AX = 101Ah
  8439. Return: stack switched
  8440. Notes:    this call may not be nested; a second call must be preceded by a call
  8441.       to "USTACK" (AX=1025h)
  8442.     while TopView requires many API calls to be executed while on the
  8443.       task's internal stack, DESQview allows those calls to be executed
  8444.       regardless of the current stack
  8445. SeeAlso: AX=1025h
  8446. --------Q-15101B-----------------------------
  8447. INT 15 - TopView - "BEGINC" - BEGIN CRITICAL REGION
  8448.     AX = 101Bh
  8449. Return: task-switching temporarily disabled
  8450. Notes:    will not task-switch until "ENDC" (AX = 101Ch) called unless task
  8451.       voluntarily releases the CPU (upon regaining the CPU, task-switching
  8452.       will again be disabled)
  8453.     suspends the caller until DOS is free
  8454. SeeAlso: AH=0Dh"MultiDOS",AX=101Ch,AX=DE13h,AX=DE1Ch,INT 2F/AX=1681h
  8455. SeeAlso: INT 60/DI=0602h
  8456. --------Q-15101C-----------------------------
  8457. INT 15 - TopView - "ENDC" - END CRITICAL REGION
  8458.     AX = 101Ch
  8459. Return: task-switching enabled
  8460. Note:    this API call may be made from within a hardware interrupt handler
  8461. SeeAlso: AX=101Bh,AX=DE13h,AX=DE1Bh,INT 2F/AX=1682h,INT 60/DI=0603h
  8462. --------Q-15101D-----------------------------
  8463. INT 15 - TopView - "STOP" - STOP TASK
  8464.     AX = 101Dh
  8465.     ES = segment of object handle for task to be stopped
  8466.          (== handle of main window for that task)
  8467. Return: indicated task will not get any CPU time until restarted with AX=101Eh
  8468. Note:    once a task has been stopped, additional "STOP"s are ignored
  8469. BUG:    in DV 2.00, this function is ignored unless the indicated task is the
  8470.       current task
  8471. SeeAlso: AX=101Eh,AX=102Bh,AH=12h"VMiX",INT 21/AH=81h
  8472. --------Q-15101E-----------------------------
  8473. INT 15 - TopView - "START" - START TASK
  8474.     AX = 101Eh
  8475.     ES = segment of object handle for task to be started
  8476.          (== handle of main window for that task)
  8477. Return: indicated task is started up again
  8478. Note:    once a task has been started, additional "START"s are ignored
  8479. SeeAlso: AX=101Dh,AX=102Bh,INT 21/AH=82h
  8480. --------Q-15101F-----------------------------
  8481. INT 15 - TopView - "DISPEROR" - POP-UP ERROR WINDOW
  8482.     AX = 101Fh
  8483.     BX = bit fields
  8484.          bits 0-12: number of characters to display
  8485.          bits 13,14: which mouse button may be pressed to remove window
  8486.              00 = either
  8487.              01 = left
  8488.              10 = right
  8489.              11 = either
  8490.          bit 15: beep if 1
  8491.     ES:DI -> text of message
  8492.     CH = width of error window (0 = default)
  8493.     CL = height of error window (0 = default)
  8494.     DX = segment of object handle
  8495. Return: BX = status: 1 = left button, 2 = right, 27 = ESC pressed
  8496. Note:    window remains on-screen until ESC or indicated mouse button is pressed
  8497. --------Q-151020-----------------------------
  8498. INT 15 - TopView - UNIMPLEMENTED IN DV v2.00+
  8499.     AX = 1020h
  8500. Return: pops up "Programming error" window in DV v2.00+
  8501. --------Q-151021-----------------------------
  8502. INT 15 - TopView - "PGMINT" - INTERRUPT ANOTHER TASK
  8503.     AX = 1021h
  8504.     BX = segment of object handle for task to interrupt (not self)
  8505.     DX:CX -> FAR routine to jump to next time task is run
  8506. Return: nothing
  8507. Notes:    the FAR routine is entered with the current ES, DS, SI, DI, and BP
  8508.       values, using the task's internal stack (see AX=101Ah); only SS:SP
  8509.       needs to be preserved
  8510.     multiple PGMINTs to a single task are processed last-in first-out
  8511.     if the other task is in a DOS or DV API call, the interruption will
  8512.       occur on return from that call
  8513. --------Q-151022BX0000-----------------------
  8514. INT 15 - TopView - "GETVER" - GET VERSION
  8515.     AX = 1022h
  8516.     BX = 0000h
  8517. Return: BX nonzero, TopView or compatible loaded
  8518.     (BL = major version, BH = minor version)
  8519. Notes:    TaskView returns BX = 0001h, DESQview v2.00+ returns BX = 0A01h
  8520. --------Q-151023-----------------------------
  8521. INT 15 - TopView - "POSWIN" - POSITION WINDOW
  8522.     AX = 1023h
  8523.     BX = segment of object handle for parent window within which to
  8524.            position the window (0 = full screen)
  8525.     ES = segment of object handle for window to be positioned
  8526.     DL = general window position (see #0345)
  8527.     CH = number of columns to offset from position specified by DL
  8528.     CL = number of rows to offset from position specified by DL
  8529. Return: nothing
  8530.  
  8531. Bitfields for TopView general window position:
  8532. Bit(s)    Description    (Table 0345)
  8533.  0,1    horizontal position
  8534.     00 = current, 01 = center, 10 = left, 11 = right
  8535.  2,3    vertical position
  8536.     00 = current, 01 = center, 10 = top, 11 = bottom
  8537.  4    don't redraw screen if set
  8538.  5-7    not used
  8539. --------Q-151024-----------------------------
  8540. INT 15 - TopView - "GETBUF" - GET VIRTUAL SCREEN INFO
  8541.     AX = 1024h
  8542.     BX = segment of object handle for window
  8543.           (0 = use default)
  8544. Return: ES:DI -> virtual screen
  8545.     CX = size of virtual screen in bytes
  8546.     DL = 00h text screen
  8547.          01h graphics screen
  8548. SeeAlso: INT 10/AH=FEh,INT 21/AH=2Bh/CX=4445h
  8549. --------Q-151025-----------------------------
  8550. INT 15 - TopView - "USTACK" - SWITCH BACK TO USER'S STACK
  8551.     AX = 1025h
  8552. Return: stack switched back
  8553. Notes:    call only after having switched to internal stack with AX=101Ah
  8554.     while TopView requires many API calls to be executed while on the
  8555.       task's private stack, DESQview allows those calls to be executed
  8556.       regardless of the current stack
  8557. SeeAlso: AX=101Ah
  8558. --------Q-1510-------------------------------
  8559. INT 15 - DESQview (TopView???) - UNIMPLEMENTED IN DV 2.x
  8560.     AH = 10h
  8561.     AL = 26h thru 2Ah
  8562. Return: pops up "Programming error" window in DV 2.x
  8563. --------Q-15102B-----------------------------
  8564. INT 15 - DESQview v2.00+ (TopView???) - "POSTTASK" - AWAKEN TASK
  8565.     AX = 102Bh
  8566.     BX = segment of object handle for task
  8567. Return: nothing
  8568. Note:    forces a task which is waiting on its objectq to continue by placing
  8569.       the handle for the task on the objectq
  8570. SeeAlso: AX=101Dh,AX=101Eh,INT 21/AH=82h
  8571. --------Q-15102C-----------------------------
  8572. INT 15 - DESQview v2.00+ - "NEWPROC" - START NEW APPLICATION IN NEW PROCESS
  8573.     AX = 102Ch
  8574.     ES:DI -> contents of .PIF/.DVP file (see #0346)
  8575.     BX = size of .PIF/.DVP info
  8576. Return: BX = segment of object handle for new task
  8577.          0000h on error
  8578. SeeAlso: AX=DE24h,INT 21/AH=4Bh
  8579.  
  8580. Format of .PIF/.DVP file:
  8581. Offset    Size    Description    (Table 0346)
  8582.  00h    BYTE    reserved (0)
  8583.  01h    BYTE    checksum of bytes 02h through 170h
  8584.  02h 30 BYTEs    blank-padded program title
  8585.  20h    WORD    maximum memory to allocate to partition in KB
  8586.  22h    WORD    minimum memory required in KB
  8587.  24h 64 BYTEs    ASCIZ program pathname
  8588.  64h    BYTE    default drive letter ('A',...)
  8589.  65h 64 BYTEs    ASCIZ default directory name
  8590.  A5h 64 BYTEs    ASCIZ program parameters
  8591.  E5h    BYTE    initial screen mode (0-7) (also see offset 189h)
  8592.  E6h    BYTE    number of text pages used
  8593.  E7h    BYTE    number of first interrupt to save
  8594.  E8h    BYTE    number of last interrupt to save
  8595.  E9h    BYTE    rows in virtual screen buffer
  8596.  EAh    BYTE    columns in virtual screen buffer
  8597.  EBh    BYTE    initial window position, row
  8598.  ECh    BYTE    initial window position, column
  8599.  EDh    WORD    system memory in KB
  8600.  EFh 64 BYTEs    ASCIZ shared program name
  8601. 12Fh 64 BYTEs    ASCIZ shared program data file
  8602. 16Fh    BYTE    program flags 1 (see #0347)
  8603. 170h    BYTE    flags2
  8604.         bit 6: uses command-line parameters in field at A5h
  8605.         bit 5: swaps interrupt vectors
  8606. ---information unique to .DVP files---
  8607. 171h  2 BYTEs    keys to use on open menu
  8608. 173h    WORD    size of script buffer in bytes
  8609. 175h    WORD    automatically give up CPU after this many tests for keyboard
  8610.           input in one clock tick (default 0 = never)
  8611. 177h    BYTE    nonzero = "uses own colors"
  8612. 178h    BYTE    nonzero if application swappable
  8613. 179h  3 BYTEs    reserved (0) according to Quarterdeck documentation
  8614.         in actual .DVP files, frequently 01h
  8615. 17Ch    BYTE    nonzero to automatically close on exit (see also #0349)
  8616. 17Dh    BYTE    nonzero if copy-protect floppy is required
  8617. ---information unique to DESQview 2.0+---
  8618. 17Eh    BYTE    .DVP version number
  8619.         00h DESQview v1.2+
  8620.         01h DESQview v2.0+
  8621.         02h DESQview v2.2+
  8622. 17Fh    BYTE    reserved (0)
  8623. 180h    BYTE    initial number of rows in physical window
  8624. 181h    BYTE    initial number of columns in physical window
  8625. 182h    WORD    maximum expanded memory to allow, in KB
  8626. 184h    BYTE    DVP program flags 3 (see #0348)
  8627. 185h    BYTE    keyboard conflict level (0-4 for DV<2.26, 00h-0Fh for DV2.26+)
  8628.         (see #0350)
  8629. 186h    BYTE    number of graphics pages used
  8630. 187h    WORD    extra system memory size
  8631. 189h    BYTE    initial screen mode (FFh = default) (overrides offset E5h)
  8632. ---information unique to DESQview 2.2+---
  8633. 18Ah    BYTE    serial port usage
  8634.         FFh uses all serial ports
  8635.         00h no serial ports
  8636.         01h only COM1
  8637.         02h only COM2
  8638. 18Bh    BYTE    DVP program flags 4 (see #0349)
  8639. 18Ch    BYTE    protection level for 386 machines
  8640. 18Dh 19 BYTEs    reserved (0) for regular DESQview
  8641. ---information unique to DESQview/X 1.0---
  8642. 18Dh    BYTE    X flags
  8643.         bits 3-7: unused (0)
  8644.         bit 2: don't display wait message when opening window
  8645.         bit 1: don't display DOS window
  8646.         bit 0: (XNEWPROC) use DOS client layer (DOS-to-X)
  8647.                (NEWPROC) inherit DOS client layer usage
  8648. 18Eh    BYTE    X keyboard behavior (0-3)
  8649. 18Fh    BYTE    font scaling
  8650.         00h fixed fonts
  8651.         01h scalable fonts
  8652. 190h 10 BYTEs    reserved (0)
  8653. 19Ah    WORD    length of data follownig XDVP signature
  8654. 19Ch  4 BYTEs    signature "XDVP"
  8655. 1A0h  N BYTEs    list of variable length records (see #0351)
  8656.  
  8657. Bitfields for .PIF/.DVP program flags 1:
  8658. Bit(s)    Description    (Table 0347)
  8659.  7    writes text directly to screen
  8660.  6    runs in foreground only (see also #0346 offset 184h)
  8661.  5    uses math coprocessor
  8662.  4    accesses system keyboard buffer directly
  8663.  3-1    reserved (0)
  8664.  0    swappable
  8665. SeeAlso: #0346,#0348,#0349
  8666.  
  8667. Bitfields for .DVP program flags 3:
  8668. Bit(s)    Description    (Table 0348)
  8669.  7    automatically assign window position
  8670.  5    maximum memory value has been specified
  8671.  4    disallow "Close" command
  8672.  3    foreground-only when doing graphics
  8673.     set by DV 2.3+ when "Runs in Background" = "D" (undoc)
  8674.  2    don't virtualize (see also #0349)
  8675.  1    foreground-only during DOS calls
  8676.     set by DV 2.3+ when "Runs in Background" = "D" (undoc)
  8677. SeeAlso: #0346,#0347,#0349
  8678.  
  8679. Bitfields for .DVP program flags 4:
  8680. Bit(s)    Description    (Table 0349)
  8681.  7    automatically close application on exit if .COM or .EXE    specified
  8682.     (see also #0346 offset 17Ch)
  8683.  6    swappable if not using serial ports
  8684.  5    start program with window hidden (v2.26+)
  8685.  4    start program in background (v2.26+)
  8686.  3    virtualize text (see also #0348)
  8687.  2    virtualize graphics (see also #0348)
  8688.  1    share CPU when foreground
  8689.  0    share EGA when foreground and zoomed
  8690. SeeAlso: #0346,#0347,#0348
  8691.  
  8692. Bitfields for DESQview keyboard conflict level:
  8693. Bit(s)    Description    (Table 0350)
  8694.  3    save/restore entire INT 09 handler state every taskswtch
  8695.  2    take special precautions for programs which read the BIOS keyboard
  8696.       buffer directly from memory
  8697.  1    never indicate keystroke available during scripts/xfers
  8698.  0    only indicate keystroke available every sixth poll
  8699. SeeAlso: #0346
  8700.  
  8701. Format of DESQview/X variable length record:
  8702. Offset    Size    Description    (Table 0351)
  8703.  00h    WORD    length of following record, 0000h if end of record list
  8704.  02h    BYTE    record type
  8705.         01h script filename, up to 64 characters
  8706.         02h command-line parameters (allows >64 characters on cmdline)
  8707.         03h environment inheritance
  8708.         04h environment string
  8709.         05h starting window position
  8710. ---types 01h,02h,04h---
  8711.  03h  N BYTEs    ASCII data
  8712. ---type 03h---
  8713.  03h    BYTE    inheritance
  8714.         00h do not inherit
  8715.         01h inherit environment
  8716. ---type 05h---
  8717.  03h  N BYTEs    ASCII copy of fields as typed into DVPMAN, separated by commas:
  8718.         starting row, starting column, starting height, starting width
  8719. Note:    if there are multiple occurrences of record types 01h, 02h, or 03h,
  8720.       only the last instance of each type is used; multiple occurrences of
  8721.       type 04h are concatenated
  8722. SeeAlso: #0346
  8723. --------Q-15102D-----------------------------
  8724. INT 15 - DESQview v2.00+ - "KMOUSE" - KEYBOARD MOUSE CONTROL
  8725.     AX = 102Dh
  8726.     BL = subfunction
  8727.          00h determine whether using keyboard mouse
  8728.         Return: BL = 00h using real mouse
  8729.                  01h using keyboard mouse
  8730.          01h turn keyboard mouse on
  8731.          02h turn keyboard mouse off
  8732. --------Q-15102E-----------------------------
  8733. INT 15 - DESQview v2.40+ - ALLOCATE SYSTEM MEMORY
  8734.     AX = 102Eh
  8735.     BX = number of bytes
  8736. Return: AX = status
  8737.         0000h successful
  8738.         ES:DI -> allocated system memory (see #0352)
  8739.         0001h failed
  8740.         ES:DI = 0000h:0000h
  8741. Note:    under DV 2.42, this call is identical to AX=1001h
  8742. SeeAlso: AX=1001h,AX=1002h,AX=DE0Ch
  8743.  
  8744. Format of DESQview system memory block header:
  8745. Offset    Size    Description    (Table 0352)
  8746.  00h    WORD    segment of next header or 0000h
  8747.  02h    WORD    segment of previous header or 0000h
  8748.  04h    WORD    size of block in paragraphs, including header
  8749.  06h    BYTE    availability flag (00h in use, 01h free)
  8750. Note:    this header is located one paragraph before the memory block proper
  8751. SeeAlso: #0342
  8752. --------Q-1511-------------------------------
  8753. INT 15 - TopView commands
  8754.     AH = 11h
  8755.     AL = various (except 17h)
  8756. Return: varies by function
  8757. Note:    in DESQview 2.x, these function calls are identical to AH=DEh, so
  8758.       see those below
  8759. SeeAlso: AX=DE00h,AX=DE22h,AX=DE30h
  8760. --------T-1511-------------------------------
  8761. INT 15 - VMiX - "sys_system" - EXECUTE SHELL SYSTEM COMMANDS
  8762.     AH = 11h
  8763.     STACK:    DWORD    pointer to ASCIZ string containing a VMiX shell
  8764.             request (max len = 127)
  8765. Return: AX = status (SYS_OK or SYS_ERROR)
  8766. SeeAlso: AH=0Ch"VMiX"
  8767. --------T-1511-------------------------------
  8768. INT 15 - MultiDOS Plus - TURN OFF AltZ TOGGLE
  8769.     AH = 11h
  8770. Note:    disables the Alt-Z MultiDOS command/program-selection hotkey
  8771. SeeAlso: AH=12h"MultiDOS"
  8772. Index:    hotkeys;MultiDOS Plus
  8773. --------Q-151117BX0000-----------------------
  8774. INT 15 - DESQview v2.20+ - "ASSERTMAP" - GET/SET MAPPING CONTEXT
  8775.     AX = 1117h
  8776.     BX = 0000h    get current mapping context without setting
  8777.          nonzero    set new mapping context
  8778. Return: BX = mapping context in effect before call
  8779.     interrupts enabled
  8780. Notes:    this function differs from AX = DE17h for DESQview v2.20 through 2.25
  8781.     mapping contexts determine conventional-memory addressability; setting
  8782.       a mapping context ensures that the associated program and data areas
  8783.       are in memory for access.  Usable by drivers, TSRs and shared
  8784.       programs.
  8785.     caller need not be running under DESQview, but must ensure that the
  8786.       stack in use will not be mapped out by the call
  8787. SeeAlso: AX=DE17h,INT 2F/AX=1685h
  8788. --------m-1511DE-----------------------------
  8789. INT 15 - DESQview - QEXT.SYS - INSTALLATION CHECK
  8790.     AX = 11DEh
  8791. Return: CF clear if installed
  8792.         AX = segment at which QEXT.SYS is located
  8793. Desc:    QEXT.SYS is Quarterdeck's HMA manager for DESQview; more recent
  8794.       versions also implement the XMS standard
  8795. Note:    a private entry point (see #0353) may be found by searching the
  8796.       beginning of the returned segment for the signature string
  8797.       "QUARTERDECK EXTENDED MEMORY MANAGER 286"; the word immediately
  8798.       prior to the signature contains the QEXT version number in BCD,
  8799.       and the word prior to that contains the offset within the QEXT
  8800.       code segment of the private entry point
  8801. SeeAlso: INT 2F/AX=4310h"XMS",INT 67/AH=3Fh
  8802.  
  8803. (Table 0353)
  8804. Call QEXT.SYS private entry point with:
  8805.     AH = 00h ???
  8806.     AH = nonzero ???
  8807. --------!---Section--------------------------
  8808.